SELECT TOP 5 * FROM TB WHERE 支出<200 ORDER BY NEWID()SELECT TOP 10 * FROM TB WHERE 支出>200 AND 支出<600 ORDER BY NEWID()是不是这个意思?

解决方案 »

  1.   

    这样查询出来的是支出判定条件的结果,我想要的是比如说:select * from tb where 日期 = '140301'查询出来1000条记录,我随机取其中的10条记录显示。
    SELECT top 10 *
    FROM tb a
    WHERE ((SELECT COUNT(*)
    FROM tb WHERE 日期 = a.日期) > 200)
    ORDER BY NEWID
    select * from tb where 日期 = '140228'查询出来150条记录,我随机取其中的5条记录显示。
    select * from tb where 日期
    SELECT top 5 *
    FROM tb a
    WHERE ((SELECT COUNT(*)
    FROM tb WHERE 日期 = a.日期) < 200)
    ORDER BY NEWID
    但是日期很多,我无法一个个去查询,而且要满足记录条数。
      

  2.   

    哦 我看懂了 根据数据量的条数来判断对吧。
    应该是这个意思。DECLARE @countnum INT 
    SELECT @countnum=COUNT(1) FROM tb IF @countnum<200
    SELECT TOP 5 * FROM tb ORDER BY NEWID()
    IF @countnum>200 AND @countnum<600
    SELECT TOP 10* FROM tb ORDER BY NEWID()
      

  3.   

    修改一下  没看见是每天的
    DECLARE @countnum INT 
    SELECT TOP 1 @countnum=num FROM (SELECT COUNT(1) AS num,日期 FROM tb  GROUP BY 日期)AS t ORDER BY num DESC
     
    IF @countnum<200
    SELECT TOP 5 * FROM tb ORDER BY NEWID()
    IF @countnum>200 AND @countnum<600
    SELECT TOP 10* FROM tb ORDER BY NEWID()