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

Откуда:
Сообщений: 4
Здравствуйте,
Возможно возникла стандартная проблема, но на форуме подобного не нашел.
PIVOT вроде бы не то, что нужно.

Есть таблица T1 вида:
sepoint weigth bunker material
s1 w1 b1 m1
s2 w2 b2 m2
s3 w3 b3 m3
. . . .
. . . .
sn wn bn mn


Необходимо получить таблицу T2 следующего вида:
setpoint 1 setpoint 2 setpoint 3 ... setpoint n weigth 1 weigth 2 weigth 3 ...weigthn bunker1 bunker2 bunker3... bunkern
s1 s2 s3 sn w1 w2 w3 wn b1 b2 b3 bn


Еще есть таблица Т3, где указан перечень всех возможных материалов.

Мой не до конца рабочий вариант заключается в том, чтобы сделать JOIN T1 и T3 по material и подзапросами формировать нужную таблицу.
  SELECT  (select T1.setpoint where T1.material=m1) as setpoint1, (select T1.setpoint where T1.material=m2) as setpoint2
  ,(select T1.setpoint where T1.material=m3) as setpoint3, (select T1.setpoint where T1.material=mn) as setpointn и т.д.
  FROM [test].[dbo].[T3] as T3
  join [test].[dbo].[T1] as T1
  on T1.material=T3.material


Но думаю есть более элегантный способ, который позволит не "ручками" перечислять поля требуемой таблицы.
23 янв 13, 23:19    [13818544]     Ответить | Цитировать Сообщить модератору
 Re: развертка строк таблицы в ряд  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8725
Динамика...


Если Ваша версия поддерживает nvarchar(max), тогда, может и прокатит...

PS Задача странная...
23 янв 13, 23:35    [13818591]     Ответить | Цитировать Сообщить модератору
 Re: развертка строк таблицы в ряд  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8725
PS Пивот тоже подойдёт, но он не совсем "без оганичений", да.
23 янв 13, 23:37    [13818595]     Ответить | Цитировать Сообщить модератору
 Re: развертка строк таблицы в ряд  [new]
clemence
Member

Откуда:
Сообщений: 4
SIMPLicity_
Динамика...


Если Ваша версия поддерживает nvarchar(max), тогда, может и прокатит...

PS Задача странная...


MS SQL 2008 R2
Если можно, то объясните подход.
23 янв 13, 23:43    [13818626]     Ответить | Цитировать Сообщить модератору
 Re: развертка строк таблицы в ряд  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8725
clemence
SIMPLicity_
Динамика...


Если Ваша версия поддерживает nvarchar(max), тогда, может и прокатит...

PS Задача странная...


MS SQL 2008 R2
Если можно, то объясните подход.


Скрипт на табличные данные - в студию...
23 янв 13, 23:46    [13818642]     Ответить | Цитировать Сообщить модератору
 Re: развертка строк таблицы в ряд  [new]
clemence
Member

Откуда:
Сообщений: 4
SIMPLicity_
Динамика...


Если Ваша версия поддерживает nvarchar(max), тогда, может и прокатит...

PS Задача странная...


И по поводу динамики, возможно ли более простое решение для заданного количества строк, скажем, например трех?
23 янв 13, 23:46    [13818644]     Ответить | Цитировать Сообщить модератору
 Re: развертка строк таблицы в ряд  [new]
clemence
Member

Откуда:
Сообщений: 4
SIMPLicity_
clemence
пропущено...


MS SQL 2008 R2
Если можно, то объясните подход.


Скрипт на табличные данные - в студию...

Я Вас не до конца понимаю...Если Вы про типы полей то nvarchar
DECLARE @ProductTotals TABLE 
(
	  [ID] nvarchar(100)
      ,[DT] datetime
      ,[SP] nvarchar(100)
      ,[SPcorr] nvarchar(100)
      ,[Tare] nvarchar(100)
      ,[WeightSkip] nvarchar(100)
      ,[WghtMode] nvarchar(100)
      ,[Bunker] nvarchar(100)
      ,[Material] nvarchar(100)
 )
24 янв 13, 00:10    [13818734]     Ответить | Цитировать Сообщить модератору
 Re: развертка строк таблицы в ряд  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
не, давайте не усложнять))
;with t1 as (
	select * from(values
		('s1','w1','b1','m1'), ('s2','w2','b2','m2'), ('s3','w3','b3','m3'), ('s4','w4','b4','m4'))
		as tmp(sepoint,weight,bunker,material))
select * from t1
24 янв 13, 00:18    [13818769]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить