我有一个像这样的交易表:
Tbarcode PlateNo DelDate status
10 101 2014-03-26 12:14:10.000 4
11 102 2014-03-26 12:10:10.000 4
12 103 2014-03-26 12:05:10.000 5
13 104 2014-03-26 12:15:10.000 5
我希望得到所有记录状态4和状态5(但状态5只需要DelDate +当前时间的3分钟。)如果当前时间超过3分钟的deldate,我不想显示状态5记录..i写了这样的东西:
select t.TBarcode,t.PlateNo from transaction_tbl t where status in(4,5) and DATEDIFF(n,CAST(DelDate as datetime),GETDATE())<=3
但这不起作用..我可以这样做吗?任何帮助都非常appricaibale
答案 0 :(得分:1)
听起来你只需要使用OR而不是'IN'来处理你的WHERE。
类似的东西:
SELECT t.TBarcode ,
t.PlateNo
FROM transaction_tbl t
WHERE [status] = 4
OR ([status] = 5 AND DATEDIFF(n, CAST(DelDate AS DATETIME), GETDATE()) <= 3)
答案 1 :(得分:0)
试试这个。
SELECT t.TBarcode ,
t.PlateNo
FROM transaction_tbl t
WHERE status = 4
UNION
SELECT t.TBarcode ,
t.PlateNo
FROM transaction_tbl t
WHERE status = 5
AND DATEDIFF(n, CAST(DelDate AS DATETIME), GETDATE()) <= 3