OUTER JOINを使用して行に格納された値を取得し、列として表示します。値がない場合は、列にNULLを表示します。行をインデックス付きビューで列に変換する方法はありますか?
ソーステーブル:
Id|Name|Value
01|ABCG|,,,,,
01|ZXCB|.....
02|GHJK|;;;;;
ビュー:
Id|ABCG|ZXCB|GHJK
01|,,,,|....|NULL
02|NULL|NULL|;;;;
クエリは次のようになります。
SELECT DISTINCT
b.Id,
bABCG.Value AS "ABCG"
bZXCB.Value AS "ZXCB"
bGHJK.Value AS "GHJK"
FROM
Bars b
LEFT JOIN Bars bABCG ON b.Id = bABCG.Id and b.Name = 'ABCG'
LEFT JOIN Bars bZXCB ON b.Id = bZXCB.Id and b.Name = 'ZXCB'
LEFT JOIN Bars bGHJK ON b.Id = bGHJK.Id and b.Name = 'GHJK'
それがインデックス付きビューでは許可されていないので、私はJOINをLEFTを削除したいです。私はそれを内部SELECTで置き換えようとしましたが、内部SELECTもUNIONには許可されていません。私はNULLを表示したいのでINNER JOINは使用できません。私は何を使うべきですか?
あなたは 'FROM bars b、bars b1、bars b2 where(b.id = b2.idとb.name = 'asdfa')と(b.id = b2.idとb.name = 'sdaf').... ' –
はい、これはnullを返しません。 – Pol
ヒント:特定のメソッドがインデックス付きビューで許可されていないという制限に遭遇している場合、同じ結果セットを生成する他のフォームも許可されない可能性が高いです。あなたは、あなたが描いているシェイプでインデックス付きのビューを作成することはできません。 –