【发布时间】:2017-03-19 06:32:54
【问题描述】:
我正在尝试为 SQL 查询中的每个组只选择第一行:
SELECT DISTINCT
CASE
WHEN S.ResEndDate = @StartDate
THEN 'ASAP'
ELSE ''
END AS 'ASAP',
R.RENTALNUMBER,
R.Area,
R.PadNum,
R.Size,
R.Pet,
R.Cost
FROM
RMS_Rentals R
INNER JOIN
RMS_Reservations S ON R.RentalNumber = S.RentalID
WHERE
Size = @RentalType
AND (RentalNumber NOT IN ((SELECT RentalID
FROM RMS_Reservations
WHERE NOT ((ResStartDate > @EndDate OR ResEndDate <= @StartDate)))))
GROUP BY
RENTALNUMBER, AREA, PadNum, Size, Pet, Cost, ResStartDate, ResEndDate
ORDER BY
RENTALNUMBER, 1 DESC
该查询用于检查并查看在给定特定类型、预订开始日期和结束日期的情况下是否可以租用特定租赁。如果给定的开始日期与不同预订的结束日期相同,它还必须尽快显示。
现在的查询方式,它为所有 ASAP 的租金显示了两行(其中一行不是 ASAP,另一行是它),并且仅一行显示不是 ASAP 的租金。
我希望它只为每个租赁显示 1 行,以及该租赁是否尽快。
我使用的是 SQL Server 2008R2
示例结果集:
ASAP RENTALNUMBER Area PadNum Size Pet
ASAP CB0001 Cabin Row 1 Cabin No
CB0001 Cabin Row 1 Cabin No
ASAP CB0003 Cabin Row 3 Cabin No
CB0003 Cabin Row 3 Cabin No
ASAP CB0005 Cabin Row 5 Cabin No
CB0005 Cabin Row 5 Cabin No
CB0006 Cabin Row 6 Cabin No
ASAP CB0007 Cabin Row 7 Cabin No
CB0007 Cabin Row 7 Cabin No
CB0008 Cabin Row 8 Cabin No
ASAP CB0009 Cabin Row 9 Cabin No
CB0009 Cabin Row 9 Cabin No
CB0010 Cabin Row 10 Cabin No
ASAP CB0012 Cabin Row 12 Cabin No
CB0012 Cabin Row 12 Cabin No
CB0052 Melody Lane 52 Cabin NO
ASAP CB0053 Melody Lane 53 Cabin No
CB0053 Melody Lane 53 Cabin No
ASAP CB0054 Melody Lane 54 Cabin No
CB0054 Melody Lane 54 Cabin No
CB0055 Melody Lane 55 Cabin No
RV0052 Shady Lane NULL Cabin No
我希望它返回的只是每个唯一的 RentalNumber 的一行,显示该 Rental 是否是 ASAP:
ASAP RENTALNUMBER Area PadNum Size Pet
ASAP CB0001 Cabin Row 1 Cabin No
ASAP CB0003 Cabin Row 3 Cabin No
ASAP CB0005 Cabin Row 5 Cabin No
CB0006 Cabin Row 6 Cabin No
ASAP CB0007 Cabin Row 7 Cabin No
CB0008 Cabin Row 8 Cabin No
ASAP CB0009 Cabin Row 9 Cabin No
CB0010 Cabin Row 10 Cabin No
ASAP CB0012 Cabin Row 12 Cabin No
CB0052 Melody Lane 52 Cabin NO
ASAP CB0053 Melody Lane 53 Cabin No
ASAP CB0054 Melody Lane 54 Cabin No
CB0055 Melody Lane 55 Cabin No
RV0052 Shady Lane NULL Cabin No
【问题讨论】:
-
我不遵循你的逻辑。样本数据和期望的结果会有所帮助。
-
哪些列定义了 RMS_Rentals 表的主键?
-
@JohnH,PK 是 RentalNumber
标签: sql sql-server join group-by