Sql server 上一行号为空时跳过行号
当上一行号为空时,我想跳过行号 我的问题如下Sql server 上一行号为空时跳过行号,sql-server,row-number,Sql Server,Row Number,当上一行号为空时,我想跳过行号 我的问题如下 select O.Id as orderItemID,Custom, CustomName=(CASE WHEN Custom=1 THEN 'Left' When Custom=2 Then 'Right' Else '' END), RowNumber = (CASE WHEN Custom = '2' THEN NULL ELSE Row_Number() OVER(ORDER BY O.ID) END ) From
select O.Id as orderItemID,Custom,
CustomName=(CASE WHEN Custom=1 THEN 'Left' When Custom=2 Then 'Right' Else '' END),
RowNumber = (CASE WHEN Custom = '2' THEN NULL ELSE Row_Number() OVER(ORDER BY O.ID) END )
From dbo.OrderItem O
left join SubCategory I On O.ItemId=I.ItemId
left join ItemType IT On O.Size=IT.TypeId
where O.OrderId=@OrderId
order by O.Id
我的输出是
我的期望输出
有人能帮我吗?您需要使用
行编号()
和分区,当Custom=2,然后1或0结束
为Custom=2
的行创建一个单独的(隐藏)计数器:
选择O.Id作为orderItemID
,习俗
,CustomName=(当Custom=1时为“左”,当Custom=2时为“左”,否则为“右”,结束)
,RowNumber=CASE(当Custom=2时)然后NULL ELSE ROW_NUMBER()结束(当Custom=2时按CASE分区,然后按O.ID结束订单)结束
来自dbo.OrderItem O
O.ItemId=I.ItemId上的左联接子类别I
LEFT JOIN ItemType On O.Size=IT.TypeId
其中O.OrderId=@OrderId
按O.Id订购
您需要使用行编号()
和分区,当Custom=2,然后1或0结束时,为Custom=2
的行创建一个单独的(隐藏)计数器:
选择O.Id作为orderItemID
,习俗
,CustomName=(当Custom=1时为“左”,当Custom=2时为“左”,否则为“右”,结束)
,RowNumber=CASE(当Custom=2时)然后NULL ELSE ROW_NUMBER()结束(当Custom=2时按CASE分区,然后按O.ID结束订单)结束
来自dbo.OrderItem O
O.ItemId=I.ItemId上的左联接子类别I
LEFT JOIN ItemType On O.Size=IT.TypeId
其中O.OrderId=@OrderId
按O.Id订购