Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Результат в одну строку, с условием ИЛИ  [new]
MrBlackJack
Member

Откуда:
Сообщений: 43
Здравствуйте! Есть две таблицы (пример):
declare @tmp table (mes int, val int)

insert into @tmp
select 1, 10
union
select 2, 20
union  
select 3, 30 
union  
select 4, 40 
union  
select 5, 50 
union  
select 6, 60 
union  
select 7, 70 
union  
select 8, 80 
union  
select 9, 90 
union  
select 10, 100
union  
select 11, 110 
union  
select 12, 120 

declare @tbl table (mes1 int, val1 int)

insert into @tbl
select 2, 50
union
select 3, 60

Нужно получить следующее, без использования Pivot....
id1id2id3id4id5id6id7id8id9id10id11id12
105060405060708090100110120

То есть, если mes=mes1 то выводить значение из второй для конктретного месяца, кол-во значение фиксированное (12 мес.)
7 окт 11, 09:57    [11399646]     Ответить | Цитировать Сообщить модератору
 Re: Результат в одну строку, с условием ИЛИ  [new]
MrBlackJack
Member

Откуда:
Сообщений: 43
Заранее спаибо! Очень надеюсь на вашу помощь)
7 окт 11, 09:58    [11399649]     Ответить | Цитировать Сообщить модератору
 Re: Результат в одну строку, с условием ИЛИ  [new]
iljy
Member

Откуда:
Сообщений: 8711
MrBlackJack,

не хотите PIVOT - используйте GROUP BY + CASE
7 окт 11, 09:58    [11399655]     Ответить | Цитировать Сообщить модератору
 Re: Результат в одну строку, с условием ИЛИ  [new]
Glory
Member

Откуда:
Сообщений: 104751
LEFT OUTER JOIN для соедиения
ISNULL() для выбора
PIVOT для отображения
7 окт 11, 09:59    [11399661]     Ответить | Цитировать Сообщить модератору
 Re: Результат в одну строку, с условием ИЛИ  [new]
aleks2
Guest
MrBlackJack
Нужно получить следующее, без использования Pivot....
id1id2id3id4id5id6id7id8id9id10id11id12
105060405060708090100110120



Дык, монитор поверните на бок. И фсе.

PS. Кстати, производители гридов недорабатывают. Горизонтальный грид бы сделали, чтоль...
7 окт 11, 10:15    [11399762]     Ответить | Цитировать Сообщить модератору
 Re: Результат в одну строку, с условием ИЛИ  [new]
MrBlackJack
Member

Откуда:
Сообщений: 43
Всем спасибо! Получилось...

select 
sum(case when id = 1  then val else 0 end) as id1,
sum(case when id = 2  then val else 0 end) as id2,
sum(case when id = 3  then val else 0 end) as id3,
sum(case when id = 4  then val else 0 end) as id4,
sum(case when id = 5  then val else 0 end) as id5,
sum(case when id = 6  then val else 0 end) as id6,
sum(case when id = 7  then val else 0 end) as id7,
sum(case when id = 8  then val else 0 end) as id8,
sum(case when id = 9  then val else 0 end) as id9,
sum(case when id = 10 then val else 0 end) as id10,
sum(case when id = 11 then val else 0 end) as id11,
sum(case when id = 12 then val else 0 end) as id12
from(select 
t.mes as id,
case when ISNULL(t1.val1,0) <> 0 then t1.val1 else t.val end as  val
from
@tmp t
left outer join @tbl t1  on t1.mes1 = t.mes) q
7 окт 11, 10:25    [11399872]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить