У меня есть следующий SQL-запрос, запущенный в SQL Server 2014, и он отлично работает. Теперь мне нужно изменить запрос так, чтобы результат был выражен в процентах (подробнее об этом ниже).SQL Query для выражения вывода из Pivot Query в процентах
SELECT *
FROM (SELECT [PropertyCode],
[MTH],
[ROOM NIGHTS]
FROM HOLDINGS) a
PIVOT (Sum([ROOM NIGHTS])
FOR [MTH] IN ([NOVEMBER 2014],
[DECEMBER 2014],
[JANUARY 2015])) AS PVTTABLE
ХОЛДИНГ в запросе, приведенном выше, является таблицей представлений.
Выход из приведенного выше запроса выглядит следующим образом:
PropertyCode NOVEMBER 2014 DECEMBER 2014 JANUARY 2015
HOTEL A 1,200 560 700
HOTEL B 900 430 500
HOTEL C 800 650 200
HOTEL А имеет 65 номеров, отель B 120 номеров и отель C 50 номеров и эти данные находятся в таблице под названием МОЩНОСТИ с колоннами " PropertyCode "и" Rooms "(перечисление количества комнат, как указано выше).
мне нужно изменить мой сводной запрос таким образом, что результат выглядит следующим образом:
PropertyCode NOVEMBER 2014 DECEMBER 2014 JANUARY 2015
HOTEL A 61% 28% 35%
HOTEL B 25% 11% 13%
HOTEL C 53% 42% 13%
Проценты рассчитываются следующим образом: ночёвок/(Нет номера конкретных отеля * дней в месяце) * 100
Мне кажется, мне нужен LEFT JOIN, чтобы соответствовать PropertyCode из таблицы представлений HOLDINGS и таблицы CAPACITY, и мне также потребуется изменить часть PIVOT (Sum ([ROOM NIGHTS]) в моем первоначальном запросе, так что что он вычисляет результат как%, но я зациклился на том, как писать синтаксис.
Спасибо. Я вставил пару кронштейнов вдоль предлагаемого решения, и он блестяще работал: [ДЕКАБРЬ 2014]/(((SELECT номера FROM HotelInventory c WHERE c.propertycode = pvttable.propertycode) * 31)/100) как Dec2014 Теперь я просто нужно, чтобы результат был одним десятичным знаком или выглядел как «89%» с добавленным знаком%. – user3115933
Я пробовал следующее относительно добавления знака%: [ДЕКАБРЬ 2014]/(((SELECT номера FROM HotelInventory c WHERE c.propertycode = pvttable.propertycode) * 31)/100) + '%' как Dec2014 , но это дает мне ошибку msg «Ошибка преобразования типа данных varchar в float». Я был бы рад, если бы вы могли помочь здесь в отношении одного десятичного знака и знака%. – user3115933
Есть несколько шагов, которые вам могут потребоваться; SQL-сервер не очень хорош в форматировании. – Jayvee