繁体   English   中英

如何使用SQL Server和Reporting Services构建包含total和breakout列的报表

[英]How to bulid a report with a total and breakout columns with SQL Server and Reporting Services

我有一个数据结构,我有两个表Alpha和Beta,它们是一对多。 为了举个例子,我们假设表格alpha有一个“State”列,而表B有“你喜欢的颜色”,你可以选择多个。 我想构建一个包含这样的列的报告:

STATE          TOTAL     RED     GREEN     BLUE
Alaska         5         1       3         1
Florida        2         2       2         0
New York       10        5       8         1

列TOTAL将是Alpha中记录的计数,正如您所看到的,由于一对多关系,颜色的总和可能超过计数。 我想如果人们不喜欢颜色,它可能会更少。

你会如何建立这样的报告。 我将在.NET中使用SQL Server和Reporting Services,因此它可以是一个复杂的查询,我只是将其转储到数据表报告中,或者是一个不太复杂的查询,其中包含一些计数和总计完成的报告。 我真的不知道解决这个问题的最佳方法。

由于您不知道哪些颜色将成为列,因此您应使用Matrix Control

您需要设置查询

SELECT 
    a.State,
    b.ColorName,
    COUNT(b.ColorID) ColorCount
FROM
    alpha a
    LEFT JOIN beta b
    ON a.id = b.a_id
GROUP BY 
    a.State,
    b.ColorName

只需拖动行的状态,列的颜色和数据的Count(ColorID)Count(ColorID)将显示在数据字段中))

注意:如果要正确显示0值,则需要LEFT JOIN和Count(ColorID)而不是Count(*)。

如果您确实知道颜色,可以使用PIVOT或总和案例技术

SELECT state SUM(CASE WHEN Color = 'RED' THEN 1 ELSE 0 END) as Red, ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM