Я использую SQL Server 2014, и у меня есть два опорных запроса, которые мне нужно объединить, чтобы получить конкретный вывод (подробно описанный ниже).Объединить 2 SQL-запроса для определенного вывода
Это кронштейн Запрос 1:
SELECT [PropertyCode],
cast(cast([DECEMBER 2014]/(((SELECT rooms FROM HotelInventory c WHERE c.propertycode=pvttable.propertycode)*31.)/100.) as decimal (9,0)) as varchar) + '%' as 'Dec 2014',
cast(cast([JANUARY 2015]/(((SELECT rooms FROM HotelInventory c WHERE c.propertycode=pvttable.propertycode)*31.)/100.) as decimal (9,0)) as varchar) + '%' as 'Jan 2015',
cast(cast([FEBRUARY 2015]/(((SELECT rooms FROM HotelInventory c WHERE c.propertycode=pvttable.propertycode)*28.)/100.) as decimal (9,0)) as varchar) + '%' as 'Feb 2015'
FROM (SELECT [PropertyCode],
[MTH],
[ROOM NIGHTS]
FROM HOLDINGS
WHERE DateOfDeparture > '2014-12-01') a
PIVOT (Sum([ROOM NIGHTS])
FOR [MTH] IN ([DECEMBER 2014],
[JANUARY 2015],
[FEBRUARY 2015])) AS PVTTABLE
Выхода из Разворотного запрос 1 выглядит следующим образом:
PropertyCode Dec 2014 Jan 2015 Feb 2015
A 75% 60% 35%
B 85% 78% 22%
C 69% 86% 38%
Это кронштейн Запрос 2:
SELECT [PropertyCode],
cast(cast([DECEMBER 2014]/(((SELECT rooms FROM HotelInventory c WHERE c.propertycode=BUDGETPVTTABLE.propertycode)*31.)/100.) as decimal (9,0)) as varchar) + '%' as 'Budget Dec2014',
cast(cast([JANUARY 2015]/(((SELECT rooms FROM HotelInventory c WHERE c.propertycode=BUDGETPVTTABLE.propertycode)*31.)/100.) as decimal (9,0)) as varchar) + '%' as 'Budget Jan2015',
cast(cast([FEBRUARY 2015]/(((SELECT rooms FROM HotelInventory c WHERE c.propertycode=BUDGETPVTTABLE.propertycode)*28.)/100.) as decimal (9,0)) as varchar) + '%' as 'Budget Feb2015'
FROM (SELECT [PropertyCode],
[MTH],
[RN]
FROM Budget1415) b
PIVOT (Sum([RN])
FOR [MTH] IN ([NOVEMBER 2014],
[DECEMBER 2014],
[JANUARY 2015],
[FEBRUARY 2015])) AS BUDGETPVTTABLE
ORDER BY [PropertyCode]
Выход из сводного Query 2 является следующим:
PropertyCode Budget Dec2014 Budget Jan2015 Budget Feb2015
A 95% 70% 60%
B 90% 89% 85%
C 75% 91% 80%
Я слил Pivot запрос 1 и Pivot запрос 2 с помощью «UNION ALL», и я получаю следующий результат:
PropertyCode Dec2014 Jan2015 Feb2015
A 95% 70% 60%
A 75% 60% 35%
B 90% 89% 85%
B 85% 78% 22%
C 75% 91% 80%
C 69% 86% 38%
Это выглядит хорошо, но я после этого конкретного проекта:
PropertyCode Budget Dec2014 Dec 2014 Budget Jan2015 Jan 2015 Budget Feb2015 Feb 2015
A 95% 75% 70% 60% 60% 35%
B 90% 85% 89% 78% 85% 22%
C 75% 69% 91% 86% 80% 38%
Спасибо, но я получаю следующее сообщение об ошибке: «Msg 319, Level 15, State 1, Line 3 Неправильный синтаксис около ключевого слова„с“Если это утверждение является общим выражением таблицы, клаузула XMLNAMESPACES. или предложение контекста изменения отслеживания, предыдущий оператор должен быть прерван точкой с запятой ». – user3115933
Извините ... Я написал предложение «WITH» рядом с q2 тоже! Редактирование моего кода, и я вернусь к вам! :-) – user3115933
Я изменил ваши коды следующим образом, и они отлично работали: выбрать q1.PropertyCode, q1. [Декабрь 2014] как 'декабрь 2014', q2. [Бюджет декабрь 2014], q1. [Январь 2015] как «январь 2015 года», q2. [Бюджет Январь 2015], q1. [февраль 2015] как «февраль 2015», q2. [Бюджет февраль 2015] Большое спасибо, Гордон! – user3115933