有没有办法在SQL中选择当前月份列?

时间:2019-05-24 16:23:14

标签: sql sql-server select subquery

我正在尝试从一个表中选择多个列。一个是包含“ MAY_A”(当月实际值)的列。月份分为多个列。

该表如下所示

ORG    ORG2    APR_A_CNT    MAY_A_CNT    ............
--------------------------------------------------------------
a      def    4             6
b      def    6             8
.      .      .             .  
.      .      .             .
.      .      .             .

我尝试过的如下。我从架构中选择了所需的列名称(MAY_A)。只是似乎无法让SELECT成为我想要的表中的列名。

SELECT  ORG, ORG2, (SELECT  COLUMN_NAME
            FROM INFORMATION_SCHEMA.COLUMNS
            WHERE TABLE_NAME = 'SUMMARY'
            AND COLUMN_NAME LIKE '%' + UPPER(CONVERT(char(3), GETDATE(),0)) + '_A%')
FROM [DB].[dbo].[SUMMARY]

我目前有什么输出:

ORG    ORG2    (no column name)
--------------------------------
a      def     NULL   
b      def     NULL
.      .       .           
.      .       .
.      .       .

我想要的是:

ORG    ORG2    MAY_A_CNT
--------------------------
a      def     6
b      def     8
.      .       .           
.      .       .
.      .       .

1 个答案:

答案 0 :(得分:2)

您可以使用CASE选择所需的列。

SELECT ORG, ORG2,
    CASE MONTH(GETDATE())
        WHEN 1 THEN JAN_A_CNT
        WHEN 2 THEN FEB_A_CNT
        WHEN 3 THEN MAR_A_CNT
        ...
        WHEN 12 THEN DEC_A_CNT
    END AS CUT_MONTH_CNT
FROM [DB].[dbo].[SUMMARY]