左外连接和3个表内的简单连接

时间:2015-03-31 11:42:28

标签: sql-server join

我是新手,因此请原谅我的无知。

临时表#all有三列:cod,cust_name,end_date。该表有2500行。当运行以下查询时,我没有得到所有代码,但它给了我大约400行。

对于HCS_Dtl和HCIS_Hd表:两者中总会有一个匹配的行

    SELECT p.cod, count(d.FormNo), SUM(d.NetAmt) 
    FROM #all p left outer join HCS_Dtl d on p.cod=d.Code
        join HCIS_Hd h on d.FormNo=h.FormNo
    WHERE 
    h.TimeStmp between '2015-03-01 00:00:00' and '2015-03-28 23:59:59'
    GROUP BY p.cod

我需要我从#all获得那2500行,即使他们在这段时间内没有我在查询的where子句中提到的表单。怎么可能呢?

我正在使用SQL Server 2008 R2

1 个答案:

答案 0 :(得分:0)

尝试使用表LEFT JOIN

上的HCIS_Hd
 SELECT p.cod, count(d.FormNo), SUM(d.NetAmt) 
FROM #all p left outer join HCS_Dtl d on p.cod=d.Code
    LEFT JOIN HCIS_Hd h on d.FormNo=h.FormNo
WHERE 
h.TimeStmp between '2015-03-01 00:00:00' and '2015-03-28 23:59:59'
GROUP BY p.cod