2017-08-28 88 views
0

我不知道如何以内部联接从表RM001客户名称 - (CUSTNAM)这个查询&已经把它添加到我的SSRS报告。可以使用帮助添加此。由于添加额外的内部联接与多发表的SQL

“从” saleslineitems为“和”,但它打破了SSRS报告后,我已经试过加入。

use n 
 

 
select distinct a.[SOP Number] 
 
--, [Item Number] 
 
, a.[Customer Number], a.[Created Date from Sales Transaction], a.[Primary Shipto Address Code from Sales Line Item] 
 
, a.[City from Sales Transaction], 
 
,c.city 
 
,case 
 
    when b.CITY <> c.city then 'Cities Do Not Match' 
 
    when c.city = '' then 'Cities do not Match' 
 
    when isnull(c.city,'1') = '1' then 'Cities Do Not Match' 
 
    else '' 
 
end as [validate cities] 
 
,b.USERDEF1 as GP_F 
 
, c.f_number as EZ_F 
 
,case 
 
    when b.USERDEF1 <> c.f_number then 'Fs do not Match' 
 
    when b.USERDEF1 = '' then 'No F in GP' 
 
     
 
    else '' 
 
end as [validate Fs] 
 
, c.f_expiration 
 
,case 
 
    when c.f_expiration <= getdate() then ' F EXPIRED '  
 
    when c.f_expiration <= DATEADD(d,15,getDate()) then 'F expiring soon' 
 
    --when c.f_expiration >= dateAdd(d,61,getdate()) then 'valid F Expiration' 
 
    else '' 
 
end as [valid f date] 
 

 
--,(select top(1) c.f_number from NBS_BoundBook..contacts where c.f_number = b.userdef1 order by c.uid desc) 
 
--, a.* 
 
from SalesLineItems a 
 
inner join rm00102 b on a.[customer number] = b.CUSTNMBR and a.[Primary Shipto Address Code from Sales Line Item] = b.ADRSCODE 
 

 
left join NBS_BoundBook..contacts c on Replace(Replace(ltrim(rtrim(b.USERDEF1)),CHAR(10),''),CHAR(13),'') = 
 
(select top(1) Replace(Replace(ltrim(rtrim(c.f_number)),CHAR(10),''),CHAR(13),'') from NBS_BoundBook..contacts 
 
    where Replace(Replace(ltrim(rtrim(c.f_number)),CHAR(10),''),CHAR(13),'') = Replace(Replace(ltrim(rtrim(b.USERDEF1)),CHAR(10),''),CHAR(13),'') 
 
    and c.city= b.CITY order by c.uid desc) 
 
where [sop type] = 'Order' 
 
and [Created Date from Sales Transaction] >= dateAdd(d,-3, getDate()) 
 
and [Item Tracking Option] in ('Serial Numbers') 
 
order by a.[Customer Number]

+0

就几点意见:在表中使用别名列。完全限定where子句过滤器列。如果任何过滤器值被从源'C'左加入将像内部联接,并从左侧产生的空值联接将被排除,因为NULL将不等于该过滤器的值。你应该展示你想做的事情,以便我们能够解决你出错的地方,并且你可以从中学习! – xQbert

回答

4

像这样的东西应该工作:

..... 
FROM SalesLineItems a 
    INNER JOIN rm00102 b 
     ON a.[customer number] = b.CUSTNMBR 
      AND a.[Primary Shipto Address Code from Sales Line Item] = b.ADRSCODE 
    INNER JOIN rm001 cust 
    ON cust.[customer number] = a.[customer number] 
    LEFT JOIN NBS_BoundBook..contacts c 
.... 
+0

这对我来说,泰克! – Jenesis