2017-08-16 10 views
1

あるテーブルから別のテーブルにデータを転記する方法を理解できません。カーソルを使用しますか? サンプルデータ:SQL Server - あるテーブルから別のテーブルへ日付を入れ替える

Build Part SN DateShipped 
A  1 123 2017-01-01 
A  2 234 2017-02-02 
A  3 345 2017-03-03 
B  1 987 2017-01-01 
B  2 876 2017-02-02 
B  3 765 2017-03-03 

望ましい結果:

Build Part1SN Part1Ship Part2SN Part2Ship Part3SN Part3Ship 
A  123  2017-01-01 234  2017-02-02 345  2017-03-03 
B  987  2017-01-01 876  2017-02-02 765  2017-03-03 
+0

のように見えます。ここにはたくさんの例があります。 –

答えて

1

下のリンクに従ってください。クロス・アプライの中で私たちがやっていることの日付メモ。

私もパートを想定してい

がそうでなければ、我々は/巣を適用する必要があるだろう、ROW_NUMBER()

例ビルド内のシーケンシャルである

Declare @SQL varchar(max) = ' 
Select * 
From (
     Select A.Build 
       ,B.* 
     From YourTable A 
     Cross Apply (values (concat(''Part'',A.Part,''SN''), concat('''',A.SN)) 
          ,(concat(''Ship'',A.Part,''Ship''),concat('''',A.DateShipped)) 
        ) B (Item,Value) 
    ) A 
Pivot (max([Value]) For [Item] in (' + Stuff((Select ','+QuoteName(concat('Part',Part,'SN')) 
                +','+QuoteName(concat('Ship',Part,'Ship')) 
               From (Select Distinct Part From YourTable) A 
               Order By 1 
               For XML Path('')),1,1,'') + ')) p' 
Exec(@SQL) 
--Print @SQL 

戻り

enter image description here

生成されたSQLは、あなたが*条件付きの集約を使用して、または*されているRDBMSによってサポートされている場合、 `PIVOT`を使用してそれを行うことができます。この

Select * 
From (
     Select A.Build 
       ,B.* 
     From YourTable A 
     Cross Apply (values (concat('Part',A.Part,'SN'), concat('',A.SN)) 
          ,(concat('Ship',A.Part,'Ship'),concat('',A.DateShipped)) 
        ) B (Item,Value) 
    ) A 
Pivot (max([Value]) For [Item] in ([Part1SN],[Ship1Ship],[Part2SN],[Ship2Ship],[Part3SN],[Ship3Ship])) p 
1
select Build, 
max(case Part when 1 then SN end) 'Part1SN', max(case Part when 1 then DateShipped end) 'Part1Ship', 
max(case Part when 2 then SN end) 'Part2SN', max(case Part when 2 then DateShipped end) 'Part2Ship', 
max(case Part when 3 then SN end) 'Part3SN', max(case Part when 3 then DateShipped end) 'Part3Ship' 
from TempTable 
group by Build 
関連する問題