2014-09-30 58 views
1

我正在查詢和我得到的結果如預期,但他們沒有加起來SQL服務器添加向上計數

我的查詢

SELECT SUBSTRING(h.HotelName, 1, CHARINDEX(' ', h.HotelName)) AS 'HotelName',  LEFT(r.RoomNumber, 1) AS Floor, COUNT(*) AS 'Rooms' 
FROM HOTEL AS h 
JOIN HOTELROOMTYPE AS hr ON h.HotelID = hr.HotelID 
JOIN ROOM AS r ON hr.HotelRoomTypeID = r.HotelRoomTypeID 
GROUP BY r.RoomNumber, h.HotelName 

我的結果

HotelName      Floor Rooms 
------------------------------ ----- ----------- 
John's       2  1 
John's       2  1 
John's       3  1 
University      1  1 
University      1  1 
University      2  1 
University      2  1 
University      2  1 
Utah       2  1 
Utah       2  1 
Utah       2  1 

預期的結果

HotelName      Floor Rooms 
------------------------------ ----- ----------- 
John's       2  2 
John's       3  1 
University      1  2 
University      2  3 
Utah       2  3 

基本上我想每個樓層的房間都加起來,任何幫助都會很棒。

回答

4

如果你想在輸出中floor,然後通過它組:

SELECT SUBSTRING(h.HotelName, 1, CHARINDEX(' ', h.HotelName)) AS HotelName, 
     LEFT(r.RoomNumber, 1) AS Floor, COUNT(*) AS 'Rooms' 
FROM HOTEL h JOIN 
    HOTELROOMTYPE hr 
    ON h.HotelID = hr.HotelID JOIN 
    ROOM r 
    ON hr.HotelRoomTypeID = r.HotelRoomTypeID 
GROUP BY h.HotelName, LEFT(r.RoomNumber, 1); 

我相信沒有你家有超過9層。

+0

真棒工作!謝謝,你假設正確的酒店只有3層樓:) – SaSquadge 2014-09-30 14:35:19