如何修改 SQL 中的 Row_Number 语法,以便根据条件分配行号?
How to modify Row_Number syntax in SQL so that row numbers are assigned based on a condition?
我正在使用 SQL Server 2014 并且我有以下 T-SQL 查询:
SELECT
d.PropertyCode,
b.ProfileID,
a.RSY_RESERVATIONSTAYID,
b.StatusCode, c2.CreatedOn AS 'Original CreatedOn',
a.RSY_UDFCHAR07 AS 'Original PMS No',
c2.ReservationStayID AS 'Original Resa ID',
b.CreatedOn,
b.PMSConfirmationNumber,
ROW_NUMBER() OVER (PARTITION BY b.ProfileID ORDER BY Count(*) DESC) AS rownum
FROM
ReservationStay b
LEFT JOIN
P5RESERVATIONSTAY a ON a.RSY_RESERVATIONSTAYID = b.ReservationStayID
LEFT JOIN
GuestNameInfo c on c.Reservationstayid = b.ReservationStayID
LEFT JOIN
RESERVATIONSTAY c2 on c2.PMSConfirmationNumber = a.RSY_UDFCHAR07
LEFT JOIN
GuestStaySummary d ON d.ReservationStayID = b.ReservationStayID
这是我的输出的摘录:
PropertyCode ProfileID .... CreatedOn .... rownum
AXL 90072 2015-06-03 14:15:27.000 1
AXL 90072 2015-03-16 19:10:27.000 2
我需要根据 CreatedOn 日期分配 rownum。换言之,对于 ProfileID 90072,将在 CreatedOn = 2015-03-16 处分配行号 1,在 CreatedOn = 2015-06-03 处分配行号 2。
为简化起见,rownum 按其创建日期的升序分配给 ProfileID。
如何修改我的 row_number
语法来实现此目的?
ROW_NUMBER() OVER (PARTITION BY b.ProfileID ORDER BY CreatedOn ASC) AS rownum
我正在使用 SQL Server 2014 并且我有以下 T-SQL 查询:
SELECT
d.PropertyCode,
b.ProfileID,
a.RSY_RESERVATIONSTAYID,
b.StatusCode, c2.CreatedOn AS 'Original CreatedOn',
a.RSY_UDFCHAR07 AS 'Original PMS No',
c2.ReservationStayID AS 'Original Resa ID',
b.CreatedOn,
b.PMSConfirmationNumber,
ROW_NUMBER() OVER (PARTITION BY b.ProfileID ORDER BY Count(*) DESC) AS rownum
FROM
ReservationStay b
LEFT JOIN
P5RESERVATIONSTAY a ON a.RSY_RESERVATIONSTAYID = b.ReservationStayID
LEFT JOIN
GuestNameInfo c on c.Reservationstayid = b.ReservationStayID
LEFT JOIN
RESERVATIONSTAY c2 on c2.PMSConfirmationNumber = a.RSY_UDFCHAR07
LEFT JOIN
GuestStaySummary d ON d.ReservationStayID = b.ReservationStayID
这是我的输出的摘录:
PropertyCode ProfileID .... CreatedOn .... rownum
AXL 90072 2015-06-03 14:15:27.000 1
AXL 90072 2015-03-16 19:10:27.000 2
我需要根据 CreatedOn 日期分配 rownum。换言之,对于 ProfileID 90072,将在 CreatedOn = 2015-03-16 处分配行号 1,在 CreatedOn = 2015-06-03 处分配行号 2。
为简化起见,rownum 按其创建日期的升序分配给 ProfileID。
如何修改我的 row_number
语法来实现此目的?
ROW_NUMBER() OVER (PARTITION BY b.ProfileID ORDER BY CreatedOn ASC) AS rownum