4

基本的に言うCASEステートメントを含むクエリを作成する必要があります

CASE if getdate() > datedue by 31 days
    then status = 'Blocked
END

今日の日付がたとえば2012年10月25日より31日大きいかどうかを確認する方法を知っている人はいますか?

編集

Select co.OrderID, cu.FName + '  ' + cu.SName as 'Name', 
cu.Address1 + ', ' + cu.Address2 + ', ' + cu.Address3 as 'Dispatch Address', 
cu.PostCode, 
ma.MaterialName as 'Item',
mi.Price as 'Item Price',
co.DateOrdered as 'Order Date',
pm.DueDate,
pm.Overdue,

HERE I NEED TO WRITE A CASE STATEMENT TO INSERT INTO A LOCKEDACCOUNT TABLE
so for example CASE WHEN DATEDIFF(dd, GETDATE(), pm.DueDate) >= 31 THEN INSERT INTO LOCKEDACCOUNT (id, status, datelocked, customerid) VALUES (.....)
END

from Customers cu
4

2 に答える 2

6

このような:

SELECT 
  CASE 
    WHEN DATEDIFF(dd, GETDATE(), @duedate) >= 1 THEN 'blocked' 
    ELSE 'Not' 
  END AS Status;

SQLフィドルデモ

注:ELSE句を指定しなかった場合、デフォルトはになりますNULL

更新:次CASEのような式でテーブルに挿入できます。

INSERT INTO Statuses VALUES
(CASE 
   WHEN DATEDIFF(dd, GETDATE(), CAST('20121025' AS DATE)) >= 31 THEN 'Blocked' 
   ELSE 'Not' 
 END);

更新されたSQLフィドルデモ

于 2012-11-21T12:23:06.313 に答える
1
select CASE 
   WHEN DATEDIFF(dd,@duedate,getdate()) >= 31 then 'Blocked' else 'NO' end
于 2012-11-21T12:45:04.837 に答える