4

ユーザーへのメッセージのテーブルから特定の列を出力しようとしています。テーブル例はこちら

StateCode  |   EffectiveDate   |   ExpirationDate
---------------------------------------------
  AK       |   2011-12-31      |   2012-12-31
  AL       |   2011-12-31      |   2015-12-31

など、すべての州についてです。私がやりたいのは、GETDATE() がEffectiveDate と ExpirationDate の間にないことを選択し、ユーザーにメッセージを出力することです。私が持っている Select ステートメントは機能しますが、複数の状態が返されるとクラッシュします。リストを保存して印刷する方法はありますか? または私が取ることができる別のアプローチ

Heres 私が現在使用している Select Query は、返された 1 つの状態で機能します

DECLARE @missingStates varChar(30)
SET @missingStates = Select StateCode FROM StateTable
   WHERE GETDATE() NOT Between StateTable.EffectiveDate AND StateTable.ExpirationDate

PRINT 'States Missing Effective Models'
PRINT @missingStates

助けてくれてありがとう

4

2 に答える 2

2

複数の値を1つの変数に組み合わせる必要があります。

DECLARE @missingStates varChar(30)
SET @missingStates = ''

 Select @missingStates = @missingStates + Code + ' ' FROM StateTable
   WHERE GETDATE() NOT Between StateTable.EffectiveDate AND StateTable.ExpirationDate

PRINT 'States Missing Effective Models'
PRINT @missingStates
于 2012-08-02T17:01:08.950 に答える
1

状態のコンマ区切りリストを取得するには、次のようにします。

Select case when @missingStates = ''
            then @missingStates = Code 
            else @missingStates = @missingStates + ',' + Code 
       end as states
FROM StateTable
WHERE GETDATE() NOT Between StateTable.EffectiveDate AND StateTable.ExpirationDate
于 2012-08-02T17:01:21.773 に答える