これは、このクエリを変更することをお勧めすることができ、最も簡単な方法は何かテーブル構造を変更することなく、SQL Serverの2014フラット化SQLクエリ
である(出力は、以下に示す)
select
a.Id, a.Sku, a.lbl,
Desc,
(select b.Valu where b.Attribute = 'rel') as 'rel',
(select b.Valu where b.Attribute = 'uom') as 'uom',
(select b.Valu where b.Attribute = 'clas') as 'clas'
from
items a
join
itemattributes b on b.id = a.id
出力:
この出力にid sku lbl desc rel uom clas
2 X111 X111-456789 red NULL NULL C
2 X111 X111-456789 red NULL Cs NULL
2 X111 X111-456789 red 3 NULL NULL
3 X222 X222-567890 white NULL NULL B
3 X222 X222-567890 white NULL Cs NULL
3 X222 X222-567890 white 2 NULL NULL
4 X333 X333-678901 blue NULL NULL C
4 X333 X333-678901 blue NULL Ea NULL
4 X333 X333-678901 blue 9 NULL NULL
:
id sku lbl desc rel uom clas
2 X111 X111-456789 red 3 Cs C
3 X222 X222-567890 white 2 Cs B
4 X333 X333-678901 blue 9 Ea C
テーブルとインデックスのサイズによっては、最適化のためにHLGEMのソリューション(下記)を使用します。 –
ありがとうございます。すべての素晴らしい入力。私は自分自身がこれを書いているのを見つけようとしていました。しかし、VKPは以前私が何をしたかを思い出させます。私は、時には、複数の結合がどこで私に対して働き始めるのかと疑問に思います。 – Steve