0

いくつかの数字と項目を基本的に 2 つの列に結合しようとしています。7 つの項目列と 7 つの数量列、および日付と ID フィールドを持つテーブルがあります。

ここに画像の説明を入力

アイテムが繰り返される場合でも、それらをすべて基本的にいくつかの列に結合するにはどうすればよいですか? 私はこのようなことをしようとしています: Item1 QTY DATE アイテム 1 で、おそらく列の数だけ繰り返します。

結果は、アイテム用に 1 列、数量用に 1 列だけにする必要があります。可能であれば、その横に日付列を追加します。

これが私の現在の選択ステートメントです

SELECT TOP (100) PERCENT 
    Item1, Qty1, Item2, Qty2, Item3, Qty3, Item4, Qty4, Item5, Qty5, 
    Item6, Qty6, Item7, Qty7, Date, ID
FROM         
    dbo.ITEMREPORT1
4

2 に答える 2

3

複数の列を複数の行に取得するには、データのピボットを解除する必要があります。SQL Server 2008 以降を使用している場合は、値を使用して CROSS APPLY を実装できます。

select c.item, c.qty, i.date
from dbo.ITEMREPORT1 i
cross apply
(
    values
    (Item1, Qty1),
    (Item2, Qty2),
    (Item3, Qty3),
    (Item4, Qty4),
    (Item5, Qty5),
    (Item6, Qty6),
    (Item7, Qty7)
) c (Item, Qty);

または、SELECT/UNION ALL で CROSS APPLY を使用できます。

select c.item, c.qty, i.date
from dbo.ITEMREPORT1 i
cross apply
(
    select Item1, Qty1 union all
    select Item2, Qty2 union all
    select Item3, Qty3 union all
    select Item4, Qty4 union all
    select Item5, Qty5 union all
    select Item6, Qty6 union all
    select Item7, Qty7
) c (Item, Qty);
于 2013-08-06T18:31:31.633 に答える