Мне нужна помощь с таблицами PIVOT или чем-то, чтобы получить результат по-моему.Строки с датами в столбцах - SQL Server 2008
У меня есть такой стол.
+---------------+--------------+----------+-----------+---------------+-----------------------------------------+-----------------+---------------+------------------+----------+-------+------------+--------------+------------+-------------------+----------------+----------+-------------------+
| Client_Id | Project_Id | Hotel_Id | Room_Type | Room_Category | Allotment_Date | Number_Of_Rooms | Number_Booked | Number_Available | Overbook | Price | Dep_Amount | Full_Payment | Admin_Only | HotelAllotment_Id | Price_Excl_VAT | VAT_Code | Charge_Dep_Amount |
+---------------+--------------+----------+-----------+---------------+-----------------------------------------+-----------------+---------------+------------------+----------+-------+------------+--------------+------------+-------------------+----------------+----------+-------------------+
| DEFAULT | TEMPLATE | 2423 | 276 | | 2010-12-05 00:00:00 | 99999 | 1 | 99998 | 0 | 33000 | 0 | 1 | 0 | 279611 | 0 | | 0 |
| DEFAULT | TEMPLATE | 2423 | 276 | | 2010-12-06 00:00:00 | 99999 | 1 | 99998 | 0 | 33000 | 0 | 1 | 0 | 279612 | 0 | | 0 |
| DEFAULT | TEMPLATE | 2423 | 276 | | 2010-12-07 00:00:00 | 99999 | 1 | 99998 | 0 | 33000 | 0 | 1 | 0 | 279613 | 0 | | 0 |
| DEFAULT | TEMPLATE | 2424 | 276 | | 2010-12-05 00:00:00 | 99999 | 1 | 99998 | 0 | 22000 | 22000 | 0 | 0 | 279590 | 0 | | 0 |
| DEFAULT | TEMPLATE | 2424 | 276 | | 2010-12-06 00:00:00 | 99999 | 1 | 99998 | 0 | 22000 | 22000 | 0 | 0 | 279591 | 0 | | 0 |
| DEFAULT | TEMPLATE | 2424 | 276 | | 2010-12-07 00:00:00 | 99999 | 1 | 99998 | 0 | 22000 | 22000 | 0 | 0 | 279592 | 0 | | 0 |
+---------------+--------------+----------+-----------+---------------+-----------------------------------------+-----------------+---------------+------------------+----------+-------+------------+--------------+------------+-------------------+----------------+----------+-------------------+
Мне нужны данные, которые будут отображаться следующим образом: чтобы получить даты в столбцах и номер, зарезервированный за день.
+---------------+--------------+----------+-----------+---------------+------------+------------+--------------+
| Client_Id | Project_Id | Hotel_Id | Room_Type | Room_Category | 2010-12-05 | 2010-12-06 | 2010-12-07 |
+---------------+--------------+----------+-----------+---------------+------------+------------+--------------+
| DEFAULT | TEMPLATE | 2423 | 276 | | 1 | 1 | 1 |
| DEFAULT | TEMPLATE | 2424 | 276 | | 1 | 1 | 1 |
+---------------+--------------+----------+-----------+---------------+------------+------------+--------------+
мне это нужно, чтобы быть сгруппированы по hotel_id, Room_Type и Room_Category (если таковые имеются)
мне это нужно, чтобы быть динамичным, потому что даты могут измениться.
Я пробовал использовать простые сводные таблицы без везения.
Любая помощь будет отличной.
Это хорошо, но с большим проектом, в котором есть много отелей, а диапазон дат - не то же самое для каждого отеля, они дают ошибку. «Msg 1056, уровень 15, состояние 1, строка 1 Количество элементов в списке выбора превышает максимально допустимое число 4096 элементов». Проект, который я тестировал, имеет 4641 запись –
@FedericoGiust Существуют ограничения на месте что может быть возвращено, если вам действительно нужно развернуть 4641 различные значения данных, тогда вам следует рассмотреть возможность разбивки на более мелкие части или сделать этот тип преобразования на вашем прикладном уровне, а не в SQL. – Taryn
@FedericoGiust Затем это знак того, что то, что вы делаете, не то, что должно быть сделано в слое базы данных – Lamak