我有两张桌子可以说'开始'和'结束',每列五列。 Begin包含Id,T1,T2,T3,T4。 End包含Id,T1E,T2E,T3E,T4E。当我运行查询以通过加入它们从两个表中选择所有内容时,我得到一个结果。但问题是,在结果中有一些行,我得到所有T1,T2,T3,T4,T1E,T2E,T3E,T4E 0.我试图排除所有值为零的列。
请帮我排除T1,T2,T3,T4,T1E,T2E,T3E,T4E = 0的值
谢谢
答案 0 :(得分:2)
您可以确保所有内容都不等于0:
SELECT ... FROM TA
INNER JOIN TAE ON ...
WHERE T1 <> 0
OR T2 <> 0
OR T3 <> 0
OR T4 <> 0
OR T1E <> 0
OR T2E <> 0
OR T3E <> 0
OR T4E <> 0
答案 1 :(得分:1)
WHERE NOT (T1=0 AND T2=0 AND T3=0 AND T4=0 AND T1E=0 AND T2E=0 AND T3E=0 AND T4E=0)
答案 2 :(得分:0)
您可以使用VALUES
来构建一个包含所有待检查字段的内联表。然后在此表上执行COUNT
以查找所有字段是否等于0
:
SELECT b.*, e.*
FROM [Begin] AS b
INNER JOIN [End] AS e ON b.Id = e.Id
CROSS APPLY (
SELECT COUNT(*)
FROM (VALUES (b.T1), (b.T2), (b.T3), (b.T4),
(e.T1E), (e.T2E), (e.T3E), (e.T4E)) x(v)
WHERE x.v = 0) t(cnt)
WHERE t.cnt < 8
答案 3 :(得分:0)
如果无法使用负值,您只需添加它们即可:
WHERE T1 + T2 + T3 + T4 + T1E + T2E + T3E + T4E > 0