SQL Server需要一列和所有其他记录的前1条记录
我需要对进行一次查询以选择SQL Server需要一列和所有其他记录的前1条记录,sql,sql-server,Sql,Sql Server,我需要对进行一次查询以选择KitchenBlinkSound='Y'的所有记录以及KitchenBlinkSound='N'的top 1,这是我的表结构 我请求的结果将是订单号22526227。基本上,它包含所有的KitchenBlinkSound='Y'记录以及KitchenBlinkSound='N'记录的top 1 SELECT * FROM TABLE WHERE KitchenBlinkSound='Y' UNION ALL SELECT TOP 1 * FROM TABLE W
KitchenBlinkSound='Y'
的所有记录以及KitchenBlinkSound='N'
的top 1
,这是我的表结构
我请求的结果将是订单号22526227。基本上,它包含所有的KitchenBlinkSound='Y'
记录以及KitchenBlinkSound='N'
记录的top 1
SELECT * FROM TABLE WHERE KitchenBlinkSound='Y'
UNION ALL
SELECT TOP 1 * FROM TABLE WHERE KitchenBlinkSound='N'
ORDER BY ORDERNO
更新
SELECT TOP 3 * FROM
(
SELECT * FROM #TABLE1 WHERE KitchenBlinkSound='Y'
UNION ALL
SELECT ORDERNO,KITCHENSTATUS,KitchenBlinkSound FROM
(
SELECT *,
ROW_NUMBER() OVER(PARTITION BY KitchenBlinkSound ORDER BY ORDERNO ASC) RNO
FROM #TABLE1 WHERE KitchenBlinkSound='N'
)TAB
WHERE TAB.RNO=1
)MAIN
- 由于子查询不允许按排序,因此添加了行编号(),以确保您正在按升序选择前1个
。如果要按降序排列,请将ORDERNO
更改为ASC
DESC
orderbyorderno desc
orderbyorderno desc将OrderNo-230作为第一项。默认情况下,orderby ORDERNO将ORDERNO-227作为前1项@德赛总督
Select * from [your table name] where KitchenBlickSound = 'Y'
UNION
Select TOP 1 * from [your table name] where KitchenBlickSound = 'N'