有一个表,MyTable(ID,Type,Date)。列'Type'的值可以是1或2.
必须选择以“日期”排序并满足以下条件的前“x”行。('a'和'b'是整数值)
所选的'x'行最多只能包含'a'类型1行和'b'类型2行。(如果a + b 我可能完全错了,但我想通过在WHERE子句中包含count()来实现这一点。但我不知道该怎么做。 我该如何解决这个问题? 更新 示例 - x = 5 案例1:
a = 5,b = 5 结果:行1,2,3,4,5 案例2:
a = 4,b = 1 结果:行1,2,4,6,8 案例3:
a = 1,b = 5 结果:行1,2,3,5,7 案例4:
a = 2,b = 1 结果:行1,2,4
答案 0 :(得分: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]