0

2 つのテーブルを結合してその結果を得るクエリがあります。

A.ID    A.SelectedField B.ID    B.Field1    B.Field2    B.Field3 
1           Field1           1    **0**          20           30
2           Field2           2    11             **21**        0 
3           Field3           3    12             22           **0** 
4           Field3           4    13             0            **33**

そして、選択したフィールドが 0 ではない行のみを取得する必要があるため、目的の結果は次のようになります。

A.ID    A.SelectedField B.ID    B.Field1    B.Field2    B.Field3 
2            Field2          2    11             21           0 
4            Field3          4    13             0            33 

それ、どうやったら出来るの?

4

2 に答える 2

1

このようなものが動作するはずです:

WHERE 
 CASE A.SelectedField WHEN 'Field1' THEN B.Field1
                      WHEN 'Field2' THEN B.Field2
                      WHEN 'Field3' THEN B.Field3
                      ELSE 0 -- default value
 END <> 0

SQLFiddle デモ

于 2013-10-14T12:35:18.953 に答える
0
SELECT CASE WHEN A.SelectedField = 'Field1' AND  B.Field1 <> 0 THEN  A.SelectedField 
            WHEN A.SelectedField = 'Field2' AND  B.Field2 <> 0 THEN  A.SelectedField        
            WHEN A.SelectedField = 'Field3' AND  B.Field3 <> 0 THEN  A.SelectedField 
            ELSE NULL
        END
于 2013-10-14T12:35:45.223 に答える