报表的sql查询

报表的sql查询,sql,Sql,我有一个视图,其中包括一个标题名和一个项目评级列。视图将标题连接到项目表,因此每个项目都会重复标题中的“名称”列 我需要在桌面上运行一个报告;理想情况下,sql结果中有5列;标题名称和评级列的4个副本,其中评级列的每个副本都显示超过某个阈值的评级计数。因此,评级列1将显示表中项目标题的评级为1或更高的项目数量,第二个评级列将显示表中相同项目标题的评级为5或更高的项目数量,依此类推 我知道如何取回名称和1个评级栏: select name, count(rating) as cnt1 from m

我有一个视图,其中包括一个标题名和一个项目评级列。视图将标题连接到项目表,因此每个项目都会重复标题中的“名称”列

我需要在桌面上运行一个报告;理想情况下,sql结果中有5列;标题名称和评级列的4个副本,其中评级列的每个副本都显示超过某个阈值的评级计数。因此,评级列1将显示表中项目标题的评级为1或更高的项目数量,第二个评级列将显示表中相同项目标题的评级为5或更高的项目数量,依此类推

我知道如何取回名称和1个评级栏:

select name, count(rating) as cnt1 from myview where rating > 1 group by name
但目前,将其与其他期望的评级列相结合让我感到失望。尝试使用union子句,但这只会在结果列表中放入多行。查询必须插入到报表模板中的一个绝对要求是,这是非常不灵活的,因为对于视图中的每个唯一名称字段,我只返回一行,否则将读取数据的报表对象将不知道如何解释结果

有什么建议吗

更新 以下是一些示例数据:

name, rating
myname1, 1
myname1, 1
myname1, 10
myname1, 4
myname1, 7
myname1, 3
myname1, 5
myname1, 5
myname1, 4
myname2, 2
myname2, 10
myname2, 6
myname2, 8
myname2, 5
myname2, 4
myname2, 6
以及所需的输出:

name, cnt1, cnt5, cnt7, cnt8
myname1, 7, 2, 1, 1
myname2, 7, 4, 2, 1
…其中cnt1=评级>1,cnt5=评级>5,cnt7=评级>7,cnt8=评级>8

选择名称,
select name,
       sum(case when rating > 1 then 1 else 0 end) as cnt1,
       sum(case when rating > 5 then 1 else 0 end) as cnt2
       /* ... repeat as many times as needed */
    from myview
    group by name
SUMCASE当评级>1时,则1,否则0结束为cnt1, SUMCASE当评级>5时,则1否则0结束为cnt5 从我的观点
按名称分组

@user85116,你能发布你的数据的表格布局和你想得到什么吗?非常感谢!我不知道你能在求和函数中做到这一点。每天学习新的东西: