当前一个行号为 NULL 时跳过行号
Skip Row Number when previous Row Number is NULL
我想在前一个行号为 NULL 时跳过行号
我的查询如下
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
我的输出是
我想要的输出
谁能帮帮我
您需要使用 ROW_NUMBER()
和 PARTITION BY CASE WHEN Custom = 2 THEN 1 ELSE 0 END
为 Custom = 2
:
的行创建一个单独的(隐藏的)计数器
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 (PARTITION BY CASE WHEN Custom = 2 THEN 1 ELSE 0 END 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
我想在前一个行号为 NULL 时跳过行号 我的查询如下
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
我的输出是
我想要的输出
谁能帮帮我
您需要使用 ROW_NUMBER()
和 PARTITION BY CASE WHEN Custom = 2 THEN 1 ELSE 0 END
为 Custom = 2
:
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 (PARTITION BY CASE WHEN Custom = 2 THEN 1 ELSE 0 END 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