如何删除Status = Pending,其日期小于查询中的currentdate ...这应该是一个select语句
Status Date
Pending 9/5/2014
Pending 9/30/2014
Complete 8/28/2014
Error 8/20/2014
答案 0 :(得分:1)
由于您说您希望在当前日期之前删除Status为'Pending'的数据,因此我假设您要删除该数据。这是删除查询。
DELETE FROM my_table
WHERE status = 'Pending'
AND date < CAST(GETDATE() AS DATE);
但是,由于您提到需要select语句,因此这里是select查询,不包括Status在当前日期之前为'Pending'的记录。
SELECT status, date FROM my_table
WHERE status <> 'Pending'
AND date < CAST(GETDATE() AS DATE)
(上述查询将错误地跳过Status为'Pending'的所有记录。)下一个查询应该完全符合预期。
SELECT status, date FROM my_table
EXCEPT
SELECT status, date FROM my_table
WHERE status = 'Pending'
AND date < CAST(GETDATE() AS DATE);
答案 1 :(得分:0)
您可以使用
SELECT status, date FROM Test
WHERE status <> 'Pending'
AND date < CAST(GETDATE() AS DATE)
答案 2 :(得分:0)
尝试以下内容。我认为它应该做的工作。如果您只更改状态列,则以下内容应该有效。
SELECT CASE WHEN date < CAST(GETDATE() AS DATE) and status ='Pending'
THEN 'YouNEwStatus'
ELSE
status END AS status, date
FROM
MYTable
如果你隐藏行。上面这位绅士提到的问题应该有效。
SELECT status, date FROM Test
WHERE status <> 'Pending'
AND date < CAST(GETDATE() AS DATE)