2015-07-04 64 views
0

這裏多組重複的結果是我的查詢:SQL Server查詢返回,因爲列

select 
    Booking.BookingID, Booking.BookingNo, 
    Booking.Vcode, Booking.TransID, 
    Booking.StatusID,Booking.BookingDate, 
    BookingContact.FirstName, BookingContact.MiddleName, BookingContact.LastName, 
    Schedule.DepatureDateTime as DepartDate, 
    Origin.City as Origin, Destination.City as Destination, 
    PaxJourney.TripTypeID 
from 
    Booking 
inner join 
    Pax on Booking.BookingID = Pax.BookingID 
inner join 
    PaxJourney on Pax.PaxID = PaxJourney.PaxID 
inner join 
    Schedule on PaxJourney.ScheduleID = Schedule.ScheduleID 
inner join 
    City as Origin on Schedule.DepartureCityID = Origin.CityID 
inner join 
    City as Destination on Schedule.ArrivalCityID = Destination.CityID 
inner join 
    BookingContact on Booking.BookingID = BookingContact.BookingID 
group by 
    Booking.BookingID ,Booking.BookingNo, Booking.Vcode, Booking.TransID, 
    Booking.StatusID,Booking.BookingDate, BookingContact.FirstName, 
    BookingContact.MiddleName, BookingContact.LastName, 
    Schedule.DepatureDateTime, Origin.City, Destination.City, PaxJourney.TripTypeID 

問題:如何在我的查詢字段刪除多個組?

我得到了,因爲這兩個「Origin.City,Destination.City」列的重複數據,當我通過部分我有錯誤刪除組中的任何一列:

消息8120,級別16,狀態1因爲它不是在聚合函數或GROUP BY子句中包含22行
列「City.City」在選擇列表中無效。

我想有一列「的Booking.BookingID組」使用組像

+0

您無論從'select'和'組by'刪除它們。除此之外,不可能說出你想要的內容,因爲你沒有描述你想要查詢的內容,期望的結果或者樣本數據。 –

回答

2

那麼你需要使用一個聚合功能,作爲錯誤陳述。所有不會分組的列都必須使用聚合。

如果你只有一組基於Booking.BookingId您需要在您選擇其他所有列使用聚合函數。例如:

SELECT Booking.BookingId, MAX(City.City) as City 
FROM Booking 
GROUP BY Booking.BookingId 

即使City.City所有行顯示相同的值,SQL Server將無法執行查詢,因爲它可能發生不同內容的重複值。這樣,您需要在所有未分組的列上定義適當的聚合(例如MINMAXAVG等)。

+0

感謝它的工作。 :) –

+0

很高興幫助你。如果這是您的解決方案,您可以將其標記爲您的答案並/或將其取消,這將有助於他人更快地找到解決方案。順便說一句,歡迎來到堆棧溢出。 – Ionic