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

Откуда:
Сообщений: 158
Здравствуйте.

Помогите с запросом: необходимо сделать из такой таблицы

col id
2009-08-261
00:002
33
04
05
06
07
2408
29
300010
011
101512
1012.613
8914
17.815
15.916
417
1018
019
2009-08-261
03:002
33
04
05
36
07
2308
19
45010
811
1015.312
1012.813
9114
1715
15.516
417
1018
019


вот такую
12345678910111213141516171819
2009-08-2600:0032402300010151012.68917.815.9410
2009-08-2603:003030230145081015.31012.8911715.5410
10 сен 09, 16:26    [7643366]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с PIVOT  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36799
И в чем проблема? Делайте на здоровье.
10 сен 09, 16:27    [7643374]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с PIVOT  [new]
DeoniS
Member

Откуда:
Сообщений: 158
Вот запрос, но результат не тот

select pvt.[3],pvt.[4],pvt.[5],pvt.[6]
from #pogoda
pivot
(
max(val)
for id in ([3],[4],[5],[6])
) as pvt
10 сен 09, 16:29    [7643394]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с PIVOT  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
В Вашей исходной таблице существуют строки, неотличимые друг от друга
например, col==0 и id==4

Почему дубляж в базе данных?
10 сен 09, 16:29    [7643395]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с PIVOT  [new]
DeoniS
Member

Откуда:
Сообщений: 158
Паганель
В Вашей исходной таблице существуют строки, неотличимые друг от друга
например, col==0 и id==4

Почему дубляж в базе данных?


Это не дубляж, это данные с производства за каждый день. id - это ссылка на параметр. Мне необходимо развернуть (сделать кросстаблицу)
10 сен 09, 16:32    [7643418]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с PIVOT  [new]
Konst_One
Member

Откуда:
Сообщений: 11513
добавьте PK в таблицу
10 сен 09, 16:33    [7643426]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с PIVOT  [new]
Glory
Member

Откуда:
Сообщений: 104760
DeoniS
Вот запрос, но результат не тот

select pvt.[3],pvt.[4],pvt.[5],pvt.[6]
from #pogoda
pivot
(
max(val)
for id in ([3],[4],[5],[6])
) as pvt

А почему тут 4 столбца, а не 19ть ?
10 сен 09, 16:33    [7643431]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с PIVOT  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
DeoniS
id - это ссылка на параметр
Чему равно значение параметра 8 ?
240 или 230?
10 сен 09, 16:35    [7643449]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с PIVOT  [new]
DeoniS
Member

Откуда:
Сообщений: 158
Konst_One
добавьте PK в таблицу


Это не проблема, а чем это мне поможет?
10 сен 09, 16:36    [7643462]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с PIVOT  [new]
DeoniS
Member

Откуда:
Сообщений: 158
Паганель
DeoniS
id - это ссылка на параметр
Чему равно значение параметра 8 ?
240 или 230?


В 00:00 это 240, а в 03:00 - 230
10 сен 09, 16:38    [7643480]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с PIVOT  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
DeoniS
В 00:00 это 240, а в 03:00 - 230
А почему не наоборот?
10 сен 09, 16:39    [7643487]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с PIVOT  [new]
iljy
Member

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

просто PK - мало чем. у вас проблема в том, что непонятно, какие данные к какой строке отнести. Вот суррогат, но ненадежный:
select * from
(
	select *, ntile(2) over(order by (select 1)) gr
	from T
) t
pivot
(
	max(col) for id in([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],
                                  [12],[13],[14],[15],[16],[17],[18],[19])
) pvt
10 сен 09, 16:39    [7643494]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с PIVOT  [new]
iljy
Member

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

а вообще у вас принципиальная ошибка в проектировании. Если это данные за день - так сделайте ПК комбинацию дата, Id.
10 сен 09, 16:40    [7643505]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с PIVOT  [new]
Konst_One
Member

Откуда:
Сообщений: 11513
и еще добавьте поле идентифицирующее текущую группу данных (за день или как там у вас выгружаются из производства). вот по этому полю и идентифицируйте свои параметры.

id int identity
idgroup int
col ?
id int

тогда для первой выгрузки будет idgroup=1, для второй 2 и тд
10 сен 09, 16:41    [7643510]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с PIVOT  [new]
DeoniS
Member

Откуда:
Сообщений: 158
Паганель
DeoniS
В 00:00 это 240, а в 03:00 - 230
А почему не наоборот?


С прибора данные идут последовательно. В исходной таблице еще есть третий столбец - уникальный номер записи (датавремяid - 2009091000001, 2009091000002 ..... 200909100300001,200909100300002) поэтому они считываются вот в такой последовательности и я знаю к какому времени относится данный показатель.
10 сен 09, 16:44    [7643531]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с PIVOT  [new]
iljy
Member

Откуда:
Сообщений: 8711
DeoniS
Паганель
DeoniS
В 00:00 это 240, а в 03:00 - 230
А почему не наоборот?


С прибора данные идут последовательно. В исходной таблице еще есть третий столбец - уникальный номер записи (датавремяid - 2009091000001, 2009091000002 ..... 200909100300001,200909100300002) поэтому они считываются вот в такой последовательности и я знаю к какому времени относится данный показатель.


а знаете - так чего не говорите? И тогда мне вообще непонятно в чем проблема.
10 сен 09, 16:45    [7643535]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с PIVOT  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
DeoniS
В исходной таблице еще есть третий столбец - уникальный номер записи
Покажите, пожалуйста, как с ним выглядит исходная таблица
10 сен 09, 16:49    [7643558]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить