2012-08-02 63 views
4

我試圖從消息中的表格中向用戶打印特定列。 下面是表格示例SQL,從選擇查詢中打印一列

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

等等所有狀態。我想要做的是選擇GETDATE()不在EffectiveDate和ExpirationDate之間並向用戶輸出消息。選擇語句我有效,但如果返回多個狀態,它會崩潰。任何方式來保存列表,然後打印?或者另一種方法,我可以採取

繼承人我現在使用的是適用於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 

感謝任何幫助

回答

2

你必須多值組合成一個單一的變量選擇查詢:

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 
+0

謝謝你正是我想找的。 – 2012-08-02 17:05:07

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