显示除范围内之外的范围外值

时间:2021-07-07 16:38:29

标签: sql reporting-services

所以我的情况很复杂。

我有 3 张桌子:

产品

<头>
资源名称 资源类型
C1 粗体
E2 克丽玛
C2 粗体
C3 粗体

购买历史

<头>
资源名称 数量 客户 ID 日期 批量
C1 7 123 6 月 1 日 324
C1 7 222 6 月 10 日 324
C1 7 333 6 月 11 日 4BZ
C1 7 124 6 月 11 日 4BZ
C1 7 125 6 月 11 日 324
C1 7 111 6 月 21 日 324
C2 7 55 6 月 22 日 A22
C2 7 1 6 月 24 日 A22

库存

<头>
资源名称 可用 数量 批量
C1 1 40 324
C2 1 50 3GC
C1 2 0 4BZ
C2 1 99 A22
E2 1 99 B22
E2 2 0 C22

所以我创建了一个查询如下:

Select 
p.resourcename
, ph.cust_id
, ph.batch
, case when i.available=1 then 'Yes' when i.available=2 then 'no' else ''end 'In Stock'
from product p
join purchase_history ph on ph.resource_name=p.resource_name
join inventory i on i.batch=ph.batch
where
ph.date >='Jun 1'
ph.date <='Jun 20' 

我得到以下信息:

<头>
资源名称 客户 ID 批量 有货
C1 123 324
C1 222 324
C1 333 4BZ 没有
C1 124 4BZ 没有
C1 123 324

我想要实现的是下面的,即使最后2批次和产品在交易范围之外,我们仍然可以看到它们如下。我知道这很奇怪,但基本上团队希望看到到目前为止已售出的产品 - 在日期范围内 - 以及所有产品的可用性状态。这是可以实现的吗?

<头>
资源名称 客户 ID 批量 有货
C1 123 324
C1 222 324
C1 333 4BZ 没有
C1 124 4BZ 没有
C1 123 324
C2 不适用 3GC
C2 不适用 A22
E2 不适用 B22
E2 不适用 C22 没有

1 个答案:

答案 0 :(得分:0)

您需要将 left join 与 purchase_history 表一起使用:

Select 
p.resourcename
, ph.cust_id
, i.batch
, case when i.available=1 then 'Yes' when i.available=2 then 'no' else ''end 'In Stock'
from product p
join inventory i on i.resource_name=p.resource_name
left join purchase_history ph 
   on ph.resource_name=p.resource_name
   and i.batch=ph.batch
where
ph.date >='Jun 1' and ph.date <='Jun 20' 

请注意,我更改了表格的顺序以提高可读性。

相关问题