Есть ли способ выбрать столбец текущего месяца в SQL? - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь выбрать несколько столбцов из таблицы. Один столбец, который содержит «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 Ответ

2 голосов
/ 24 мая 2019

Вы можете использовать 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...