报表的sql查询
我有一个视图,其中包括一个标题名和一个项目评级列。视图将标题连接到项目表,因此每个项目都会重复标题中的“名称”列 我需要在桌面上运行一个报告;理想情况下,sql结果中有5列;标题名称和评级列的4个副本,其中评级列的每个副本都显示超过某个阈值的评级计数。因此,评级列1将显示表中项目标题的评级为1或更高的项目数量,第二个评级列将显示表中相同项目标题的评级为5或更高的项目数量,依此类推 我知道如何取回名称和1个评级栏:报表的sql查询,sql,Sql,我有一个视图,其中包括一个标题名和一个项目评级列。视图将标题连接到项目表,因此每个项目都会重复标题中的“名称”列 我需要在桌面上运行一个报告;理想情况下,sql结果中有5列;标题名称和评级列的4个副本,其中评级列的每个副本都显示超过某个阈值的评级计数。因此,评级列1将显示表中项目标题的评级为1或更高的项目数量,第二个评级列将显示表中相同项目标题的评级为5或更高的项目数量,依此类推 我知道如何取回名称和1个评级栏: select name, count(rating) as cnt1 from m
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,你能发布你的数据的表格布局和你想得到什么吗?非常感谢!我不知道你能在求和函数中做到这一点。每天学习新的东西: