【问题标题】:SQL, print a column from a select querySQL,从选择查询中打印一列
【发布时间】:2012-08-02 16:57:32
【问题描述】:

我正在尝试在给用户的消息中打印表格中的特定列。 这是表格示例

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

以此类推,适用于所有州。我想做的是选择 GETDATE() 不在 EffectiveDate 和 ExpirationDate 之间,并向用户打印一条消息。我拥有的 Select 语句有效,但如果返回多个状态,它会崩溃。有什么方法可以保存列表然后打印出来吗?或者我可以采取的其他方法

这是我现在使用的选择查询,适用于返回的 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

感谢您的帮助

【问题讨论】:

    标签: sql tsql


    【解决方案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
    

    【讨论】:

    • 谢谢它正是我想要的。
    【解决方案2】:

    要获得以逗号分隔的状态列表,请执行以下操作:

    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
    

    【讨论】:

      猜你喜欢
      • 2019-09-14
      • 1970-01-01
      • 2010-12-28
      • 2018-05-23
      • 2021-04-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2019-04-04
      相关资源
      最近更新 更多