为了账号安全,请及时绑定邮箱和手机立即绑定

sql 统计查询 分页的问题

sql 统计查询 分页的问题

翻翻过去那场雪 2018-12-07 07:42:01
如表Aid name bid cid  time1   jerry   1     1   2015-11-092   tom    1     1   2015-11-083   lucy    2     1   2015-11-074   tom    1     1   2015-11-085   lucy    3     1   2015-11-07表Bbid   name1     状态12     状态23     状态3表Ccid  name1     公司1结果公司,         时间,           状态1,    状态2,    状态3公司1     2015-11-07         0                1               1公司1     2015-11-08         2                0               0公司1     2015-11-09         1                0               0请问SQL语句该怎么写?需要进行分页,谢谢!
查看完整描述

5 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

-- 给一段SQLServer 2005+ 下的代码

-- 设置每页条数和取第几页
declare @pagesize int, @pagenum int
set @pagesize = 20
set @pagenum = 1


select C.name as [公司], t.time, t.[状态1], t.[状态2], t.[状态3]
from
(
    select
    cid,
    time,
    sum(case bid when 1 then 1 else 0 end) as [状态1],
    sum(case bid when 2 then 1 else 0 end) as [状态2],
    sum(case bid when 3 then 1 else 0 end) as [状态3],
    row_number() over (order by cid, time) as [rank]
    from A group by cid, time
)t inner join C
on t.rank between (@pagenum-1)*@pagesize +1  and @pagenum*@pagesize and t.cid = C.cid

查看完整回答
反对 回复 2019-01-07
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

先写个视图,然后对视图进行分页就行了。

查看完整回答
反对 回复 2019-01-07
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

int strPage=(pageIndex-1)*pageSize;

int endPage=pageIndex*pageSize;

select top 20 * from 

(

select row_number() over(order by a.排序的列 desc)rownum,* from 表名 a

)temp where temp.rownum>=starPage and temp<=endPage

这个是MVC的三层架构,传入pageIndex和pageSize

查看完整回答
反对 回复 2019-01-07
?
慕的地10843

TA贡献1785条经验 获得超8个赞

get it

查看完整回答
反对 回复 2019-01-07
?
qq_花开花谢_0

TA贡献1835条经验 获得超6个赞

结果中列的个数应该不是固定的 真的可以写成视图么?

单单现在这样的行转列,就不是简单一个sql可以实现的吧。。

写了一个sql,但只是【状态1,状态2,状态3】部分实际是需要拼接sql才可行的。。

SELECT * FROM (
SELECT #C.name AS 公司,#A.time AS 时间,#B.NAME FROM #A,#B,#C
where #A.bid = #B.bid AND #A.cid=#C.cid)X
PIVOT(COUNT(name) FOR name IN (状态1,状态2,状态3))a

因为涉及到拼接sql和分页,我推荐用存储过程来做。

不过也许是在下才疏学浅,没能想到好的办法。期待大牛的回答。。

查看完整回答
反对 回复 2019-01-07
  • 5 回答
  • 0 关注
  • 444 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信