我需要一些关于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,Level 15,State 1,Line 1 选择列表中元素的数量超过了允许的最大数量4096个元素。” 我正在测试的项目有4641条记录 –
@FedericoGiust有限制至于什么可以返回,如果你真的需要调整4641个不同的数据值,那么你应该考虑把它分解成更小的部分,或者在应用层中进行这种类型的转换而不是SQL。 – Taryn
@FedericoGiust然后,这是一个迹象表明你正在做的不是应该在数据库层中完成的事情 – Lamak