1、表结构没写全,如何确定哪个床位已经被占用 2、提供下表的数量级,这个对写出的语句也有一定影响 先暂时提供一种方案 with T AS ( SELECT ID,LEVEL,房间,床位 ,count(1)over(partition by 房间) N--床位所属房间空床数量 FROM TABLE1 WHERE ……--可选床位的限定条件,这个你没提供结构,自己写吧 ) select ID,LEVEL,房间,床位 from (select ID,LEVEL,房间,床位,ROW_NUMBER()OVER(ORDER BY (CASE WHEN N>=来宾人数 THEN N END),房间,床位) RN from T WHERE level=来宾等级) WHERE RN<=来宾人数
2、提供下表的数量级,这个对写出的语句也有一定影响
先暂时提供一种方案
with T AS (
SELECT ID,LEVEL,房间,床位
,count(1)over(partition by 房间) N--床位所属房间空床数量
FROM TABLE1
WHERE ……--可选床位的限定条件,这个你没提供结构,自己写吧
)
select ID,LEVEL,房间,床位 from
(select ID,LEVEL,房间,床位,ROW_NUMBER()OVER(ORDER BY (CASE WHEN N>=来宾人数 THEN N END),房间,床位) RN
from T WHERE level=来宾等级)
WHERE RN<=来宾人数
数据一年在一百万左右, 床位是否被占用有个标志, sold , Y 表示占用,N表示未占用