1

我有一个数据结构,其中有两个表 Alpha 和 Beta,它们是一对多的。举个例子,假设表 alpha 有一个“状态”列,表 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,因此它可能是一个复杂的查询,我只是转储到数据表报告中,也可能是一个不太复杂的查询,由报告完成一些计数和总计。我真的不知道解决这个问题的最佳方法。

4

1 回答 1

3

由于您不知道哪些颜色将成为列,您应该使用矩阵控件

您需要设置查询

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

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

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

如果您确实知道可以使用的颜色PIVOT或求和技术

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

于 2013-01-08T18:16:46.833 回答