Select 行在 where 子句中使用计数条件

Select rows using a count condition inside a where clause

有一个table,MyTable(ID, Type, Date)。列 'Type' 的值可以是 1 或 2。

前'x'行,按'Date'排序且满足以下条件,必须选择。('a'和'b'是整数值)

所选 'x' 行最多只能包含 'a' 类型 1 行和 'b' 类型 2 行。(如果 a+b < x,则仅包含 a+b必须选择行。)

我可能完全错了,但我想通过在 WHERE 子句中包含 count() 来做到这一点。但是我不知道该怎么做。

我该如何解决这个问题?

更新:

例子-

x = 5

案例一: a = 5, b = 5

结果:第 1、2、3、4、5 行

案例二: a = 4, b = 1

结果:第 1、2、4、6、8 行

案例三: a = 1, b = 5

结果:第 1、2、3、5、7 行

案例四: a = 2, b = 1

结果:第 1、2、4 行

您可以通过在另一个查询中嵌套 UNION 来实现:

select top @x *
from (

   select top @a *
   from table 
   where type = '1'
   order by [date]

  union

   select top @b *
   from table
   where type = '2'
   order by [date]

) t
order by [date]