select * from LH_ZT full join LH_XZ on LH_ZT.date=LH_XZ.date full join LH_DG ON LH_ZT.date=LH_DG.date WHERE LH_ZT.date=convert(varchar(10),getdate()- 1,120) AND LH_XZ.date=convert(varchar(10),getdate()- 1,120) AND LH_DG.date=convert(varchar(10),getdate()- 1,120)
这是一个简化的SQL实例,有时当date为空时结果不显示,如何解决这个问题
------解决方案--------------------
用子查询先过滤,再连接。
还有要 3 个连接关系。
SELECT *
FROM (SELECT * FROM lh_zt WHERE lh_zt.DATE = CONVERT(VARCHAR(10),Getdate() - 1,120)
) lh_zt
FULL JOIN (SELECT * FROM lh_xz WHERE lh_xz.DATE = CONVERT(VARCHAR(10),Getdate() - 1,120)
) lh_xz
ON lh_zt.DATE = lh_xz.DATE
FULL JOIN (SELECT * FROM lh_dg WHERE lh_dg.DATE = CONVERT(VARCHAR(10),Getdate() - 1,120)
) lh_dg
ON lh_zt.DATE = lh_dg.DATE
OR lh_xz.DATE = lh_dg.DATE