特定の行の値を列に転置しようとしています。以下は私のテーブルには、次のようになります。以下はIf文を使用して行を列に変換する
ID Shoe Shirt Hat Socks Pants
1 Red 3 Black 2 Red
私が使用していたコードです:
select Max(Case When [Item] = 'Shoe' Then Color End) as Shoe
,Max(Case When [Item] = 'Shirt' Then Quantity End) as Shirt
,Max(Case When [Item] = 'Hat' Then Color End) as Hat
,Max(Case When [Item] = 'Socks' Then Quantity End) as Socks
,Max(Case When [Item] = 'Pants' Then Color End) as Pants
From Inventory
問題私が見えるようにテーブルがこれです欲しい
ID Item Color Quantity
1 Shoe Red
1 Shirt 3
1 Hat Black
1 Socks 2
1 Pants Red
私のコードでは行の値が時々列の色であり、それ以外の時は列の数量です。私は、値を持つ列にしか使用できないようにしたいと考えています。私の実際のselectステートメントは50以上のMax(Case)ステートメントを持っていますので、もし多少の場合は、if文をオーバーライドすることができ、各行に1つずつ行う必要はありません!
「正しい」値がどの列に含まれているかをどのように知っていますか?他の列はNULLですか?次に、合体(Color、Quantity)またはisnull(Color、Quantity)を使用することができます。 –
「Color」と「Quantity」の両方に値がある場合はありません。 – Stephen
であるため、nullになることはありませんが、Colorは空白( "")になります。また、Quantityは0になります。いいえ、両方に値を設定することはできません。 –