我正在尝试从一个表中选择多个列。一个是包含“ 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
. . .
. . .
. . .
答案 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]