0

次の表があります(例):

RESEARCH  | START_DATE          | END_DATE            | STATUS         
a         | 2013-11-10 19:00:00 | 2013-11-11 12:00:00 | Ready
b         | 2013-11-12 02:30:00 | 2013-12-01 13:30:00 | Ready
c         | 2013-11-05 07:00:00 | 2013-12-10 15:50:00 | Running

START_DATE に達したときに研究のステータスを Ready から Running に変更し、END_DATE に達したときに Running から Finished に変更する必要があります。

SQL Server 2008 R2 Express のみを使用してこれを行う方法はありますか?

4

2 に答える 2

0
UPDATE MyTable 
SET STATUS = 'Running' 
WHERE START_DATE >= CURRENT_TIMESTAMP

UPDATE MyTable 
SET STATUS = 'Finished' 
WHERE END_DATE >= CURRENT_TIMESTAMP

上記の 2 つのクエリをこの順序で実行すると、目的が達成されます。

それらを順不同で実行する場合、最初のUPDATEは次のようにする必要があります

UPDATE MyTable 
SET STATUS = 'Running' 
WHERE START_DATE >= CURRENT_TIMESTAMP 
AND END_DATE < CURRENT_TIMESTAMP 

または、次のようにして 2 つのクエリを組み合わせることができます。

UPDATE MyTable 
SET STATUS  =  
CASE  
  WHEN START_DATE >= CURRENT_TIMESTAMP 
     AND END_DATE < CURRENT_TIMESTAMP  THEN 'Running' 
  WHEN END_DATE >= CURRENT_TIMESTAMP THEN 'Finished'
  ELSE 'Ready'
  END 
于 2013-11-06T18:15:40.820 に答える