-- тестовые данные
declare @tab table ([Time] varchar(5), Id int, Value int)
insert into @tab
select '20:45', 1, 45 union all
select '20:45', 2, 57 union all
select '20:45', 3, 75 union all
select '21:00', 1, 34 union all
select '21:00', 2, 25 union all
select '21:00', 3, 87 union all
select '22:00', 1, 14 union all
select '22:00', 2, 12 union all
select '22:00', 3, 41
-- запросег
select
base.Time,
[1] = id1.value,
[2] = id2.value,
[3] = id3.value
from
-- строки ИДшника, которому соответсвует максимальное кол-во строк (выбиарем только время)
(
select top 1 with ties
t1.Time
from @tab t1
order by
(select count(*) from @tab t2 where t2.id = t1.id) desc,
id
) base
-- джойинм (по времени) по порядку для того кол-ва столбцов, которое нам нужно (в данном случае 3 разные ИДшки, значит для трех)
left join @tab id1 on base.[time] = id1.[time] and id1.id = 1
left join @tab id2 on base.[time] = id2.[time] and id2.id = 2
left join @tab id3 on base.[time] = id3.[time] and id3.id = 3
Помогите с запросом
Time Id Value
20:45 1 45
20:45 2 57
20:45 3 75
21:00 1 34
21:00 2 25
21:00 3 87
22:00 1 14
22:00 2 12
22:00 3 41
Нужно сделать таблицу,чтобы Id отображалось в верхней строчке(т.е. столбцы),а Time было в самом первом столбце.На их пересечении естественно должно быть Value.
Несколько лет назад я подобное делал,но уже все позабыл.
Спасибо,попробую
например, на t-sql это легко сделать через pivot - особенно в твоем случае....
bave pivout идет только начиная с sql2005
Может какие компоненты(Dridы) есть?
DevExpress -> Pivout
Код:
Но есть одно НО, время в рамках ИД должно быть уникальным, иначе невозможно будет строке времени однозначно поставить в соответвие то или иное Value.
И еще, если кол-во ИДшек - произвольное, то тут вам и в 2005 обычный пивот не поможет, т.к. там число колонок тоже строко фиксированное. В таком случае, решение - использовать динамику. Но при этом нужно всегда помнить что произвольное кол-во столбцов - признак не оч.хорошего проектирвоания БД и часто ненужная псевдоуниверсальность.
Удачи!
Цитата: maxFM
DevExpress -> Pivout
У меня DevExpress 4.0 ,но компонента Pivot я там не встречал.
Цитата: mag23
У меня DevExpress 4.0 ,но компонента Pivot я там не встречал.
Вкладка DevExpess
cxPivoutGrid,cxDBPivoutGrid и т.д.
а вообще даже в самом Borland есть стандартный набор компонентов как в разделе Cube. Но я с ними не работал и советовать не стану!!!:):):):)
Цитата: maxFM
Вкладка DevExpess
cxPivoutGrid,cxDBPivoutGrid и т.д.
а вообще даже в самом Borland есть стандартный набор компонентов как в разделе Cube. Но я с ними не работал и советовать не стану!!!:):):):)
cxPivoutGrid,cxDBPivoutGrid и т.д.
а вообще даже в самом Borland есть стандартный набор компонентов как в разделе Cube. Но я с ними не работал и советовать не стану!!!:):):):)
У меня только dxDBGrid и cxGrid.Наверное версия DevExpres старая.
Компоненты и работу с ними настойчиво предлагаю обсуждать в соответствующем разделе форума.
Кстати спасибо за ответ.Но у меня количество IDешек варьируется от 1 до 100.