【问题标题】:Add new column in the dynamic query在动态查询中添加新列
【发布时间】:2020-03-18 08:26:41
【问题描述】:

这是一个动态查询,它显示为一个表格。但我想在此查询中添加一个列作为“标题”作为标识符。动态查询如下:

SELECT [YR_4]
    ,[YR_3]
    ,[YR_2]
    ,[YR_1]
FROM (
    SELECT CASE 
            WHEN yr = 9999
                THEN 'A Medians'
            ELSE cast(yr AS VARCHAR(10))
            END AS yr
        ,yrdes
    FROM #years2
    ) AS t
PIVOT(MAX(yr) FOR yrdes IN (
            [YR_4]
            ,[YR_3]
            ,[YR_2]
            ,[YR_1]
            )) t1

有人可以帮我在上面的查询中添加一个带有硬编码值的列吗?

【问题讨论】:

  • 你能显示预期的结果吗
  • 预期结果将是我已经得到的表格格式。只是我想在其中添加新列。谢谢你
  • 你想添加什么?
  • 结果显示为表格,因此我想在该表格中添加一个具有硬编码值的列

标签: sql sql-server pivot


【解决方案1】:

您可以有一个附加列,其硬编码值如下所示:

SELECT [YR_4]
    ,[YR_3]
    ,[YR_2]
    ,[YR_1]
    ,'Hardcoded_value' AS AdditionalColum -- Code change here
FROM (
    SELECT CASE 
            WHEN yr = 9999
                THEN 'A Medians'
            ELSE cast(yr AS VARCHAR(10))
            END AS yr
        ,yrdes
    FROM #years2
    ) AS t
PIVOT(MAX(yr) FOR yrdes IN (
            [YR_4]
            ,[YR_3]
            ,[YR_2]
            ,[YR_1]
            )) t1

【讨论】:

  • 我按照您上面的建议尝试过,但显示错误:无效的列名“Hardcoded_value”
  • @karabimukherjee。 . .使用单引号来表示文字字符串。
  • @YogeshSharma:是的,我用过单引号
  • @YogeshSharma,感谢您的纠正。错误地使用了双引号。更正它。
【解决方案2】:

你似乎想要子查询:

select 'header' as custom_col, t.*
from ( <dynamic query> 
     ) t;

你也可以使用临时表:

SELECT [YR_4, [YR_3], [YR_2], [YR_1] INTO #Temptable
FROM (SELECT CASE WHEN yr = 9999
                  THEN 'A Medians'
                  ELSE cast(yr AS VARCHAR(10))
             END AS yr, yrdes
      FROM #years2
     ) AS t
     PIVOT ( MAX(yr) FOR yrdes IN ([YR_4], [YR_3], [YR_2], [YR_1] )
     ) t1;

【讨论】:

    猜你喜欢
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多