UNION对2个查询有一个表差异

时间:2016-06-30 09:34:45

标签: sql

我想合并或UNION两个查询

查询结果列的类型和大小相同,但每个列的表不同。可以吗?

第一个是Absent表,第二个是Attend Table。这两个表基本上是完全相同的(不知道为什么必须有2个表,如果1就足够了)

SELECT DISTINCT dmg.dmg_FirstName,
        dmg.dmg_Surname,
        lnk.lnk_ID,
        dlk.dlk_AssessDate,
        dmg.dmg_Sex,
        trn.ScotHealthboard
FROM    DAILY_LINK dlk
JOIN    Absent ab ON ab.ScotRefID = dlk.dlk_ID
JOIN    Link lnk ON lnk.lnk_ID = ab.Person_ID
JOIN    Demographic dmg ON dmg.dmg_ID = lnk.lnk_dmgID
JOIN    Training trn ON trn.Trn_ID = ab.Training_ID
WHERE   dlk.dlk_AssessDate >= '2015/01/01' AND dlk.dlk_AssessDate <= '2015/12/01';
UNION
SELECT DISTINCT dmg.dmg_FirstName,
        dmg.dmg_Surname,
        lnk.lnk_ID,
        dlk.dlk_AssessDate,
        dmg.dmg_Sex,
        trn.ScotHealthboard
FROM    DAILY_LINK dlk
JOIN    Attend at ON at.ScotRefID = dlk.dlk_ID
JOIN    Link lnk ON lnk.lnk_ID = at.Person_ID
JOIN    Demographic dmg ON dmg.dmg_ID = lnk.lnk_dmgID
JOIN    Training trn ON trn.Trn_ID = at.Training_ID
WHERE   dlk.dlk_AssessDate >= '2015/01/01' AND dlk.dlk_AssessDate <= '2015/12/01';

1 个答案:

答案 0 :(得分:2)

我怀疑;之前union导致错误。如果你删除它,它应该运行正常。

SELECT DISTINCT dmg.dmg_FirstName,
        dmg.dmg_Surname,
        lnk.lnk_ID,
        dlk.dlk_AssessDate,
        dmg.dmg_Sex,
        trn.ScotHealthboard
FROM    DAILY_LINK dlk
JOIN    Absent ab ON ab.ScotRefID = dlk.dlk_ID
JOIN    Link lnk ON lnk.lnk_ID = ab.Person_ID
JOIN    Demographic dmg ON dmg.dmg_ID = lnk.lnk_dmgID
JOIN    Training trn ON trn.Trn_ID = ab.Training_ID
WHERE   dlk.dlk_AssessDate >= '2015/01/01' AND dlk.dlk_AssessDate <= '2015/12/01'
UNION
SELECT DISTINCT dmg.dmg_FirstName,
        dmg.dmg_Surname,
        lnk.lnk_ID,
        dlk.dlk_AssessDate,
        dmg.dmg_Sex,
        trn.ScotHealthboard
FROM    DAILY_LINK dlk
JOIN    Attend at ON at.ScotRefID = dlk.dlk_ID
JOIN    Link lnk ON lnk.lnk_ID = at.Person_ID
JOIN    Demographic dmg ON dmg.dmg_ID = lnk.lnk_dmgID
JOIN    Training trn ON trn.Trn_ID = at.Training_ID
WHERE   dlk.dlk_AssessDate >= '2015/01/01' AND dlk.dlk_AssessDate <= '2015/12/01';