sql – 选择子查询里面的case语句何时?
发布时间:2020-05-28 08:46:15 所属栏目:MsSql 来源:互联网
导读:有没有办法在sql server case / when语句中从“then”运行select语句? (我需要从then语句运行子查询.)我不能在where语句中使用它. select case @Group when 6500 then (select top 10 * from Table1) when 5450 then (select top 5 * from Tab
|
有没有办法在sql server case / when语句中从“then”运行select语句? (我需要从then语句运行子查询.)我不能在where语句中使用它. select
case @Group
when 6500 then (select top 10 * from Table1)
when 5450 then (select top 5 * from Table1)
when 2010 then (select top 3 * from Table1)
when 2000 then (select top 1 * from Table1)
else 0
end as 'Report'
解决方法一种选择是从查询中删除它并执行以下操作:declare @Numrows int;
select @Numrows = (case @Group
when 6500 then 10
when 5450 then 5
when 2010 then 3
when 2000 then 1
else 0
end);
select top(@NumRows) *
from Table1;
你也可以这样做: with const as (
select (case @Group
when 6500 then 10
when 5450 then 5
when 2010 then 3
when 2000 then 1
else 0
end) as Numrows
)
select t.*
from (select t.*,ROW_NUMBER() over () as seqnum
from table1 t
) t cross join
const
where seqnum <= NumRows;
在这种情况下,您需要列出列以避免在列表中获取seqnum. 顺便说一下,通常在使用top时你也应该有订单.否则,结果是不确定的. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
