繁体   English   中英

获取一个表中的所有行,使用where子句对第二个表中的列求和

[英]get all rows from one table, sum on column from a second table using a where clause

我想获取table1中的所有行,并且我想在table3中为table1中的每个人获得总共一列。 如果我不在查询中的任何地方使用where子句(在sub select,inner join或regular where子句中),我可以这样做。 如果我使用如下所示的where子句,则只有table1中的人员在提供的日期之间的table2中有记录并且已经过验证。

我想要的是来自table1的所有行,但只将table2中的记录与提供的日期之间的记录进行求和。

有没有办法在单个查询中执行此操作?

SELECT table1.ID
     , table1.LName
     , table1.FName
     , (Select SUM(table3.DollarValue) Where table2.Verified = 1) AS total
FROM table3 
INNER JOIN table2       ON table3.IncentiveID = table2.IncentiveID 
RIGHT OUTER JOIN table1 ON table2.ID = table1.ID
Where table2.date >= '1/1/2012'
  AND table2.date <= '12/31/2012'
  AND table2.Verified = 1
Group By table1.ID, table1.LName, table1.FName, table2.Verified
Order By table1.LName, table1.FName

预先感谢您的任何帮助!

根据您的描述,听起来您想要类似以下内容。 哪个将table2table3连接起来并将sum()放在带有WHERE过滤的子查询中,然后将该结果连接到table1

SELECT t1.ID, 
    t1.LName, 
    t1.FName, 
    IsNull(t.total, 0) as Total
FROM table1 t1
LEFT JOIN
(
    SELECT t2.id, SUM(t3.DollarValue) as total
    FROM table2 t2
    INNER JOIN table3 t2
        on t2.IncentiveID = t3.IncentiveID
    WHERE t2.date >= '2012-01-01' 
        AND t2.date <= '2012-12-31' 
        AND t2.Verified = 1
    GROUP BY t2.id
) t
    on t1.ID = t.ID
Order By t1.LName, t1.FName;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM