2014-09-30 68 views
0

如何在查詢中刪除Status小於當前日期的Status = Pending ...這應該是一個select聲明如何在select語句中刪除Status = Pending且日期小於當前日期

Status Date 
Pending 9/5/2014 
Pending 9/30/2014 
Complete 8/28/2014 
Error 8/20/2014 
+1

更多描述請! – 2014-09-30 06:36:57

+1

您正在刪除或從表中選擇? – 2014-09-30 06:39:32

+0

選擇表...更新問題和正文 – Ian 2014-09-30 06:40:55

回答

1

既然您說您希望在當前日期之前刪除Status爲'Pending'的數據,那麼我假設您要刪除該數據。這是刪除查詢。

DELETE FROM my_table 
WHERE status = 'Pending' 
AND date < CAST(GETDATE() AS DATE); 

不過,既然你提到,你需要一個select語句,這裏不包括其中狀態爲當前日期之前「待處理」記錄的選擇查詢。

SELECT status, date FROM my_table 
WHERE status <> 'Pending' 
AND date < CAST(GETDATE() AS DATE) 

(上面的查詢將錯誤地跳過其中狀態爲「待定」的所有記錄)接下來的查詢應完全工作打算。

SELECT status, date FROM my_table 
EXCEPT 
SELECT status, date FROM my_table 
WHERE status = 'Pending' 
AND date < CAST(GETDATE() AS DATE); 
+0

嗨,我需要擺脫當前日期之前的日期與待決狀態。 – Ian 2014-09-30 06:45:40

+0

您是否嘗試過第二個查詢? – CodeNewbie 2014-09-30 06:49:03

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)