からSELECTクエリで一部の行を交換する方法:私は2つのテーブルを持っている別のSELECT
T1:
ID Department ATTRIBUTES TEAM
--- ---------- ---------- ------
1 R&D Dress_Code NULL
2 R&D Dress_Code Web
3 R&D Food System
4 R&D Food NULL
5 R&D Color NULL
6 Marketing Food System
T2:
ID VAL
--- ----------
1 Smart
2 Casual
3 Beef
4 Chicken
5 Green
6 Fish
T1の目的は、すべて表示することです
部門属性。
TEAMがNULLの場合、その部門の全員に適用されます。チームには、一般設定を上書きする特別な設定があることがあります。
例えば、私は私が書くことができますR &の「ウェブのチームとして設定D.
を取得したい:
SELECT T1.DEPARTMENT, T1.ATTRIBUTES, T1.TEAM, T2.VAL
FROM T1
LEFT JOIN T2 ON T1.ID = T2.ID
WHERE T1.DEPARTMENT = 'R&D' AND T1.TEAM = 'Web'
これは、ドレスコードはカジュアルであると言う一つのレコードが表示されます。
しかし、私は結果になりたい:
ATTRIBUTES VAL
---------- ------
Dress_Code Casual
Food Chicken
Color Green
同様にR & Dにおける「システム」チームのために、結果は、スマートドレスコード、牛肉、および緑色になります。
私は最初にすべてのR & D結果を選択して、上記の選択結果で行を置き換えることを考えています。
これはストアドプロシージャとして記述する必要があります。
ご協力いただきありがとうございます。 CTEおよびROW_NUMBER()を使用して
マッチングの論理を書き留めてもいいですか?あなたが書いた2つのテーブルに基づいて、なぜ「食物属性」が「カジュアル・ヴァル」または「グリーン・ヴァル」ではなく、「チキン・ヴァル」と一致しなければならないのか分かりません。 – DVT
あなたのCTEにMaxrecusrionを指定すると、これは自己ループを再帰的に行うのに役立ちます。最大値は32767です。デフォルトは0です。再帰に必要なレベルを知っていない場合は、0を指定してください。 –
@DVT解決しようとしていた問題は、他の行と列も含みます。私は図示のようにT1とT2に単純化しました(ただし、単純に1つのテーブルに入れることができますが、元のテーブルではできません)。この場合、私はT1.ID = T2.IDでマッチします。 – Zelurd