2017-08-04 103 views
0

我已经写下面的查询来显示输出如下(页面底部),但这不是预期的。书面的SQL查询不显示预期的输出

注意:代码和说明始终固定在表A中(在未来添加更多的代码),唯一的百分比变化,数据是uniquecode牵强,有些uniquecode没有百分比和一些有。

下面的查询没有达到我的要求,当Code没有任何百分比值的时候Code也没有,应该显示说明,百分比列显示为NULL代码。

SELECT a.Code, 
     a.Description , 
     b.Percentage, 
FROM TableA a 
    LEFT OUTER JOIN TableB b ON a.Code = b.Code 
WHERE a.Code IN('CIC', 'CIA', 'DAC', 'PIB', 'UTI', 'DAB') 
    AND (b.UniqueCode = 'A100'); 

请参考下表,

Table A 
--------------------------- 
Code Description 
--------------------------- 
CIC  AAAABBBCC 
CIA  HHHHAAAAA 
DAC  HHHIIIIIH 
PIB  BBEEERERE 
UTI  GGGGGGGGGG 
DAC  CCSASASAAS 
BVB  HHHAAAAAAA 
BBC  KKKIIIIWWW 
ABC  BBMMMMAMAA 

Table B: 
-------------------------------- 
Code Percentage UniqueCode 
-------------------------------- 
CIC     A100 
CIA  80   A100 
DAC     A100 
PIB  100   A100 
UTI  100   A100 
DAB  70   A100 
CIC  100   A101 
CIA  80   A101 
DAC     A101 
PIB  100   A101 
UTI  100   A101 
DAB     A101 

预计

-------------------------------- 
    Code Description Percentage 
    -------------------------------- 
    CIC  AAAABBBCC  NULL 
    CIA  HHHHAAAAA  80 
    DAC  HHHIIIIIH  NULL 
    PIB  BBEEERERE  100 
    UTI  GGGGGGGGG  100 
    DAB  CCSASASAA  100 
+1

什么是s.Code这里,我认为它可能是b.code的错字。 –

+0

它是一个列名 – Harshal

+0

该列在哪个表中? A或B,如果它在A表中,那么A码或它应该是B码 –

回答

0

输出你有你的where子句,从而有效地迫使内中包含的表B过滤器加入。将其移至连接条件应该可以解决您的问题。

SELECT a.Code, 
     a.Description , 
     b.Percentage, 
FROM TableA a 
    LEFT OUTER JOIN TableB b ON a.Code = b.Code AND (b.UniqueCode = 'A100') 
WHERE a.Code IN('CIC', 'CIA', 'DAC', 'PIB', 'UTI', 'DAB');