【问题标题】:Display blank values显示空白值
【发布时间】:2021-06-24 06:30:33
【问题描述】:

我的情况有点复杂。

我有两张桌子,

表 1:损失原因 该表收集了针对父容器和子容器的所有报废交易:

Container Reason Scrap Qty
123-A Bent 5
123-C Scratch 1
123-D Bent 3
123-C Flash 1
123-A Bent 1

表 2:容器 表的目的是显示父容器及其子容器和容器数量。 P 表示父母,C 表示孩子

Container Container-Level Qty
123 P 100
123-A C 20
123-B C 10
123-C C 20
123-D C 20
123-E C 10

我创建了如下查询: `

select 
C.container,
lr.container,
sum(case when lr.Reason ='Bent' then lr.scrap_qty) as Bent
,sum(case when lr.Reason ='Flash' then lr.scrap_qty) as Flash
,sum(case when lr.Reason ='Scratch' then lr.scrap_qty) as Scratch
from 
loss_reasons lr
join 
container c on c.container=lr.container
group by C.container ,lr.container `

运行查询后,我得到以下数据输出:

Container Bent Flash Scratch
123-A 6 0 0
123-C 0 1 1
123-D 3 0 0

我想要做的是获取下表而不是上面的表,其中即使没有针对容器创建废品事务 - 无论级别如何,报告仍应显示值为 0 的容器(请查看粗体值):

Container Bent Flash Scratch
123 0 0 0
123-A 6 0 0
123-B 0 0 0
123-C 0 1 1
123-D 3 0 0
123-E 0 0 0

这可能吗?非常感谢您在这件事上的帮助。

【问题讨论】:

标签: sql reporting-services ssrs-2012


【解决方案1】:

inner join 仅返回与连接条件匹配的记录。根据您的要求,您需要一个包含不匹配记录的outer join返回哪些不匹配的记录取决于您使用的 join 类型,leftrightfull

在您的情况下,出于个人的可理解性和便于未来开发和维护的原因,而不是按照艾伦在 cmets 中的建议使用 right outer join,我将重新排列 from 子句中的表格并使用 @987654329 @如下:

select c.container
      ,lr.container
      ,sum(case when lr.Reason ='Bent' then lr.scrap_qty else 0 end) as Bent
      ,sum(case when lr.Reason ='Flash' then lr.scrap_qty else 0 end) as Flash
      ,sum(case when lr.Reason ='Scratch' then lr.scrap_qty else 0 end) as Scratch
from container c
    left outer join loss_reasons lr
        on c.container = lr.container
group by c.container
        ,lr.container;

在此查询中,连接“左侧”的表 (container) 将返回记录,无论是否在连接“右侧”的表中找到匹配项 (loss_reasons) .我重新排列了表格,以便您从包含所有 containers 的“基本”表格开始,然后您可以从中将 join 放入其余数据。

就我个人而言,与从“事件”本身开始相比,以这种方式从“事物”开始然后加入“事件”对我来说在语义和逻辑上更有意义。

如果leftright 标识符没有意义,只需将join 子句视为仅引用正在连接的表的单行代码,按照它们包含在整体中的顺序脚本,有左右两端:

[Left Table] left outer join [Right Table]

所以在上面的陈述中,这将是:

container left outer join loss_reasons

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    相关资源
    最近更新 更多