【问题标题】:SQL Server query returns duplicate results because of multiple group by columns由于多个 group by 列,SQL Server 查询返回重复的结果
【发布时间】:2015-07-04 12:44:55
【问题描述】:

这是我的查询:

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,第 22 行
选择列表中的“City.City”列无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

我想通过“group by Booking.BookingID”这样的一列使用group by

【问题讨论】:

  • 您将它们从selectgroup by 中删除。除此之外,不可能说出您想要什么,因为您没有关于您希望查询做什么、想要的结果或示例数据的描述。

标签: sql sql-server duplicates distinct sql-server-2014


【解决方案1】:

正如错误所述,您需要使用聚合函数。您不会分组的所有列都必须使用聚合。

如果您只有一个基于Booking.BookingId 的分组依据,您需要对您选择的所有其他列使用聚合函数。例如:

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

即使City.City 的所有行都显示相同的值,SQL Server 也不会执行您的查询,因为它可能出现具有不同内容的重复值。这样,您需要在所有未分组的列上定义正确的聚合(例如MINMAXAVG 等)。

【讨论】:

  • 谢谢它的工作。 :)
  • 很高兴为您提供帮助。如果这是您的解决方案,您可以将其标记为您的答案和/或投票,这将帮助其他人更快地找到解决方案。对了,欢迎堆栈溢出。
猜你喜欢
  • 2015-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-06
  • 2011-01-19
  • 1970-01-01
  • 2018-01-30
相关资源
最近更新 更多