Список всех комбинаций МММ-ГГГГ за год - PullRequest
0 голосов
/ 05 августа 2011

Как мне перечислить такие данные в DB2?

FiscalMonthYear
----------
Dec-2010
Jan-2011
Feb-2011
..
Nov-2011

Самой первой комбинацией MM-YYYY всегда является 'Dec' + '-' + CHAR (CURRENT YEAR - 1)

1 Ответ

2 голосов
/ 05 августа 2011

Во-первых, я не рекомендую присоединяться к (отформатированному) текстовому столбцу, как этот (особенно к тому, что сильно зависит от языка).
Как правило, попробуйте присоединиться к месяцу / годам следующим образом:

SELECT columnList
FROM tableA
JOIN tableB
ON tableB.numericMonth = MONTH(tableA.date)
AND tableB.numericYear = YEAR(tableA.date)

Хотя следует отметить, что было бы предпочтительнее иметь два столбца даты для объединения, а не разделенные столбцы, как это.

Создание (разделенного, числового) диапазона довольно просто:

WITH date_range (month, year) as (SELECT 12, 2011
                                  FROM sysibm/sysdummy1
                                  UNION ALL
                                  SELECT month - 1, 2012
                                  FROM date_range
                                  WHERE month > 1)

Хотя, надеюсь, вы действительно присоединитесь (если возможно) к фактической дате, и в этот момент утверждение должно выглядеть примерно так:

SELECT columnList
FROM tableA
WHERE tableDate BETWEEN '2011-12-01' and '2012-11-30'

Существует также MONTHNAME() функция в DB2, которая будет возвращать (длинное) имя месяца.Генерирует эти результаты:

December                  
November                  
October                   
September                 
August                    
July                      
June                      
May                       
April                     
March                     
February                  
January  

... Который вы могли бы подстрокой получить первые 3 символа.Имейте в виду, что возвращаемое значение зависит от языка (в зависимости от системных настроек запущенного задания), поэтому использовать его для столбца соединения ужасно (поэтому я не рекомендую использовать месяц-имя как условие соединения - использовать номер месяца).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...