развертка строк таблицы в ряд

clemence
Дата: 23.01.2013 23:19:41
Здравствуйте,
Возможно возникла стандартная проблема, но на форуме подобного не нашел.
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


Но думаю есть более элегантный способ, который позволит не "ручками" перечислять поля требуемой таблицы.
SIMPLicity_
Дата: 23.01.2013 23:35:59
Динамика...


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

PS Задача странная...
SIMPLicity_
Дата: 23.01.2013 23:37:08
PS Пивот тоже подойдёт, но он не совсем "без оганичений", да.
clemence
Дата: 23.01.2013 23:43:50
SIMPLicity_
Динамика...


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

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


MS SQL 2008 R2
Если можно, то объясните подход.
SIMPLicity_
Дата: 23.01.2013 23:46:23
clemence
SIMPLicity_
Динамика...


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

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


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


Скрипт на табличные данные - в студию...
clemence
Дата: 23.01.2013 23:46:42
SIMPLicity_
Динамика...


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

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


И по поводу динамики, возможно ли более простое решение для заданного количества строк, скажем, например трех?
clemence
Дата: 24.01.2013 00:10:07
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)
 )
Cygapb-007
Дата: 24.01.2013 00:18:36
не, давайте не усложнять))
;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