我有一个连接两个表并提供结果的查询:
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
我该怎么做?
答案 0 :(得分: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 DEMO 强>
答案 1 :(得分: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