这是我的 SQL 表结构的样子:
CREATE TABLE TempCategory
(
Id BIGINT,
Name VARCHAR(100)
)
CREATE TABLE TempSubCategory
(
Id BIGINT,
CategoryId BIGINT,
Name VARCHAR(100)
)
CREATE TABLE TempProduct
(
Id BIGINT,
SubCategoryId BIGINT,
Name VARCHAR(100)
)
http://sqlfiddle.com/#!3/2606fd/4
我正在编写一个 SSRS 报告,将类别显示为 x 轴,子类别显示为 y 轴,产品显示为数据。每个类别都有自己的子类别,因此我在每个行组的列组中显示子类别。
SSRS 报告不会为其未获取值的行绘制单元格。所以我的报告最终看起来像这样:
这是我当前查询的样子:
SELECT TempCategory.Id, 'MainCategoryId',
TempCategory.Name 'CategoryName',
TempSubCategory.id 'SubCategoryId',
TempSubCategory.Name 'SubCategory',
TempProduct.Id 'ProductId',
TempProduct.Name 'ProductName'
FROM TempCategory
INNER JOIN TempSubCategory
ON TempCategory.Id = TempSubCategory.CategoryId
INNER JOIN TempProduct
ON TempSubCategory.Id = TempProduct.SubCategoryId
我要做的是修改查询,使其始终为每个子类别组返回相同数量的行,以便在它确实具有数据的行中有空值或 0。
例如:类别 1 有 3 个子类别,产品的最大数量在子类别 1 中,所以我希望查询为每个具有主类别 1 的子类别返回 5(子类别 1 的最大产品数量)行。
对于类别 2,每个子类别将返回 2 行,因为最大数量的产品属于子类别 2。
是否可以在 SQL 中执行此操作,或者在 SSRS 报告中是否有其他方法可以执行此操作?
- 更新 -
这是具有 ProductName 行组的表
这是带有 SubCategory 列组的矩阵
这是具有产品名称行组的表