SQL CASE WHEN 问题

IssacChow 2014-08-21 11:05:20
已知表A:f_id,f_type
查询条件
如果f_type为1查询该表前20条数据
否则查询前100条
这个该怎么写呢 ?

SELECT
CASE
WHEN type = 1 THEN
(SELECT TOP 20 * FROM a )
ELSE
(SELECT TOP 100 * FROM a )
END AS lst
FROM
a

这里好像是错的,求帮助
...全文
271 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hleb231 2014-08-27
  • 打赏
  • 举报
回复
if exists(select * from a where type=1 )
select top 20 * from a
esle
select top 100 * from a
HelloWordGirl 2014-08-26
  • 打赏
  • 举报
回复
SELECT TOP (CASE WHEN TYPE=1 THEN 20 ELSE 60 end)*FROM t
唐诗三百首 2014-08-22
  • 打赏
  • 举报
回复
如果f_type为1查询该表前20条数据 否则查询前100条 --> 请问 1.f_type是表a的字段还是变量? 2.如果f_type是字段,当表a.f_type既有1又有非1的值,结果应该是什么?
walkeeper 2014-08-22
  • 打赏
  • 举报
回复
这样的逻辑用IF ELSE比较直观一点吧……
lzw_0736 2014-08-22
  • 打赏
  • 举报
回复

DECLARE @type INT
SET @type = 1

SELECT TOP ( CASE WHEN @type = 1 THEN 20
                  ELSE 100
             END )
        *
FROM a
Tiger_Zhao 2014-08-21
  • 打赏
  • 举报
回复
楼主你确定你描述的需求没错?难道所有的 f_type 字段只有一个值?
请问A表象下面这样的数据应该取多少条?
f_id f_type
1 0
2 1
3 1
4 0
...
黑暗中的光芒 2014-08-21
  • 打赏
  • 举报
回复

if type = 1
    SELECT top (20) * FROM  a 
else
    SELECT top (100) * FROM  a 

-狙击手- 2014-08-21
  • 打赏
  • 举报
回复
if else
發糞塗牆 2014-08-21
  • 打赏
  • 举报
回复
DECLARE @type INT 
SET @type=1
DECLARE @sql VARCHAR(max)
SET @sql='SELECT top ('+CASE @type WHEN  1 THEN '20' ELSE '100' END +') * FROM  a   '
PRINT @sql

/*
SELECT top (20) * FROM  a   
*/
spiritofdragon 2014-08-21
  • 打赏
  • 举报
回复
楼主贴出表数据,或者描述再清楚点。 以目前描述,难道是这样?

select top 20 * from a where f_type=1
union all
select top 100 * from a where f_type<>1
sdhp 2014-08-21
  • 打赏
  • 举报
回复
疑问同#4 如果f_type值都相同的话 with t as( select row_number() over(order by f_id) as rownumber,* from A) select * from t where rownumber<=case when f_type=1 then 20 else 100 end

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧