我在下面写了一些查询,将输出显示如下(页面底部),但这不符合预期。
注意:表A中的代码和描述始终是固定的(将来会添加更多代码),唯一的百分比会有所不同,数据是由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
答案 0 :(得分: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');