Использование оператора AS в MS QUERY SQL с UNION ALL

Моя компания имеет двойную структуру, которая требует, чтобы данные хранились отдельно. У нас есть два набора данных, которые идентичны по структуре. Я обычно использую MS Query для написания SQL с использованием одного набора данных, и когда у меня есть то, что я хочу, я просто добавляю оператор UNION ALL и повторяю SQL, но заменяю любые имена наборов данных вторым. Он всегда работает нормально, т.к. дайте мне один запрос, объединяющий данные из обоих наборов данных.

Однако я получаю некоторые поля даты, используя функцию datepart, чтобы получить год и месяц записей, и я использую оператор AS для именования столбцов. Пример: выберите часть даты (гггг, дата поступления) как "Год".

Хотя он работает в исходном запросе с одним набором данных, когда я создаю «UNION ALL» и добавляю дополнительный SQL, имя столбца становится пустым. То же самое и с некоторыми полями, которые я суммирую и переименовываю, чтобы иметь более краткое имя, чем SUM (QUANTITY_ORDERED) - они становятся пустыми после UNION ALL.

Есть ли уловка для переименования столбцов при использовании UNION ALL или другие предложения?

Спасибо, Марк


person user3595828    schedule 11.12.2014    source источник


Ответы (1)


Если вы имеете в виду SQL SERVER (честно говоря, я не уверен, что такое ms-query), тогда псевдонимы ваших столбцов должны быть выполнены в первом операторе вашего объединения.

Например, в первом примере ниже имя столбца остается пустым, а во втором примере указано правильное имя столбца;

-- Example 1
Select datepart(yyyy,CURRENT_TIMESTAMP) 
UNION ALL 
SELECT datepart(yyyy,DATEADD(YY, -1, CURRENT_TIMESTAMP)) as "Year"

-- Example 2
Select datepart(yyyy,CURRENT_TIMESTAMP) as "Year"
UNION ALL 
SELECT datepart(yyyy,DATEADD(YY, -1, CURRENT_TIMESTAMP))
person Mr Moose    schedule 11.12.2014