【发布时间】:2012-08-18 18:16:55
【问题描述】:
我正坐在一个逻辑问题上,我只是越来越困惑自己。
示例表
标识 |客户 ID |任务 |已确认 |取消 |完成
1 | 20 |正文 | 1 | 0 | 0
2 | 20 |正文 | 1 | 1 | 0
3 | 20 |正文 | 1 | 0 | 1
4 | 17 |正文 | 0 | 1 | 0
5 | 17 |正文 | 1 | 0 | 0
6 | 20 |正文 | 1 |空 |空
7 | 20 |正文 | 0 | 1 |空
我希望选择 custID = 20 的所有任务并确认 =1。如果任务被取消=1或完成=1,则不返回记录。
在这种情况下,返回的行将是 1 和 6。
到目前为止我的查询是
SELECT *
FROM table1
WHERE
(CustID = 20 AND Confirmed = 1 AND Cancelled <> 1 AND Completed <> 1) OR
(CustID = 20 AND Confirmed = 1 AND Cancelled = 1 AND Completed <> 1) OR
(CustID = 20 AND Confirmed = 1 AND Cancelled <> 1 AND Completed = 1)
任何帮助将不胜感激。
【问题讨论】:
标签: sql-server-2008 select where