本帖最后由 u012542584 于 2015-01-11 15:12:16 编辑

解决方案 »

  1.   

    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.   


    数据一年在一百万左右, 床位是否被占用有个标志, sold  , Y 表示占用,N表示未占用