我正在尝试建立一个网站,以显示员工从客户那里获得的分数。数据看起来像这样
Name | wait|service |solution | total | date
joe 1 1 1 1 2018-09-01 00:00:00.000
joe 1 3 5 4 2018-09-02 00:00:00.000
joe 5 5 5 5 2018-09-03 00:00:00.000
joe 3 1 5 3 2018-09-04 00:00:00.000
joe 3 1 1 3 2018-09-05 00:00:00.000
joe 1 5 3 1 2018-09-06 00:00:00.000
我试图弄清楚如何进行选择查询,以排除其中wait,service,solution和total为1的行。
我起初以为where wait != 1 and service !=1 and solution != 1 and total != 1
是可以的。但这不包括所有包含1的记录,当我执行查询并看到结果时很明显。
但是是否有“轻松”等待排除其中四列全为1的行?
因此,当我执行查询时,它看起来像这样
Name | wait|service |solution | total | date
joe 1 3 5 4 2018-09-02 00:00:00.000
joe 5 5 5 5 2018-09-03 00:00:00.000
joe 3 1 5 3 2018-09-04 00:00:00.000
joe 3 1 1 3 2018-09-05 00:00:00.000
joe 1 5 3 1 2018-09-06 00:00:00.000
任何帮助将不胜感激
答案 0 :(得分:1)
您快到了。只需将逻辑更改为OR
而不是AND
:
select *
from TableName
where Wait<>1 or Service<>1 or solution<>1 or total<>1
如果所有4个字段的值都为1,则where子句中的条件将返回false
,这将导致记录从结果中排除。
产生SQL Fiddle。
答案 1 :(得分:0)
使用:
SELECT *
FROM TEST
WHERE
(COLUMN_1 + COLUMN_2 + COLUMN_3 + COLUMN_4) <> 4
OR
(COLUMN_1 = COLUMN_2
AND COLUMN_2 = COLUMN_3
AND COLUMN_3 = COLUMN_4
AND COLUMN_4 <> 1);
答案 2 :(得分:0)
NOT
有时可以使其更容易:
WHERE NOT (wait = 1 AND service = 1 AND solution = 1 AND total = 1)