即使没有匹配项,也显示联接表中的列

时间:2019-04-23 13:54:14

标签: sql sql-server tsql

我正在将表R5PARTS和R5STOCK与R5TRANSLINES连接起来。

当事务类型TRL_TYPE ='I'且匹配联接条件时,我想提取MAX(TRL_DATE)(来自R5TRANSLINES) 这样,我可以知道零件的上次使用时间。

我有什么问题? 并非所有部件都已使用,因此在R5TRANSLINES上没有此类事务'I'的行。 从逻辑上讲,当我使用WHERE TRL_TYPE ='I'进行过滤时,该零件没有任何结果。

是否可以使用工作区,所以即使表R5TRANSLINES上不存在TRALL_TYPE ='I'的行,ALL SELECTED LINES也会显示该行? (在这种情况下,字段TRL_DATE将被固定为... '01 -01-1900')

从我的研究中,我认为它应该与简单的“左连接R5TRANSLINES”一起使用,但效果不佳...

这是我的代码:

declare @startdate date = '2010-01-01'
declare @enddate date = '2020-01-01'

SELECT      RS.STO_PART, Rs.STO_PART_ORG, RS.STO_STORE, RP.PAR_DESC, ISNULL(RS.STO_AVGPRICE, 0) as 'STO_AVGPRICE',

            MAX(RT.TRL_DATE) as 'LAST_USED', RT.TRL_TYPE

FROM        R5STOCK RS inner join R5PARTS RP on RP.PAR_CODE = RS.STO_PART and RS.STO_PART_ORG = RP.PAR_ORG            
            left join R5TRANSLINES RT on (RT.TRL_PART = RP.PAR_CODE and RP.PAR_ORG = RT.TRL_PART_ORG and TRL_TYPE = 'I')

WHERE       RP.PAR_NOTUSED != '+' and RS.STO_STORE in ('116-01', '138-05', '156-01', '216-01', '228-01', '282-01')      and TRL_PART = '116-MEU-NR 100-25-3.3547'

GROUP BY    RP.PAR_CODE, RS.STO_PART, RS.STO_PART_ORG, RS.STO_STORE, RP.PAR_DESC, RS.STO_AVGPRICE, RT.TRL_TYPE
ORDER BY    RS.STO_PART

编辑:简化查询并添加“重复”帖子中的所有建议。但是仍然无法显示所有需要的行。

0 个答案:

没有答案