我有2张桌子
我想显示返回所有同时包含工作和家庭号码
的行的结果RESULT
我写过这个SQL,但它显示了所有。如何显示仅出现在家庭和工作号码中具有这两个值且未显示空值的那些人。我尝试添加WHERE PHONE_NUM IS NOT NULL但它不起作用。我将不胜感激任何帮助。感谢。
WITH TABLE1 AS (
SELECT
P.ID,
P.NAMES,
P.DIGIT,
Q.NUM_TYP,
Q.PHONE_NUM
FROM
dbo.TABLE1 P
INNER JOIN dbo.TABLE2 Q
ON P.ID = Q.ID
)
SELECT *
FROM
TABLE1
PIVOT (Max(PHONE_NUM) FOR NUM_TYP IN (HOME, WORK)) R
;
答案 0 :(得分:2)
您可以使用条件聚合从表2中获得结果:
select t2.id,
max(case when t2.num_type = 'HOME' then phone_num end) as home,
max(case when t2.num_type = 'WORK' then phone_num end) as work
from dbo.TABLE2 t2
group by t2.id
having max(case when t2.num_type = 'HOME' then phone_num end) is not null and
max(case when t2.num_type = 'WORK' then phone_num end) is not null;
如果您愿意,可以加入表格1以获取其他字段。