0

我在单行中有 2 个 SQL 查询,如下所示:

SELECT * FROM (SELECT NameCode,Name FROM tblNames) AS X, (SELECT SUM(Mo+Tu) FROM tblFieldDays WHERE tblFieldDays.NameCode =36)

第一个查询即 (SELECT NameCode,Name FROM tblNames) 给出了用户列表。现在我想为第一个查询生成的每个用户计算 Mo+Tu 的总和,即 SUM(Mo+Tu)。

即我想提供在第一个查询中生成的 NameCode 而不是当前的 36 值,例如静态值

我还尝试使用 IN 语句,如下所示:

SELECT * FROM (SELECT NameCode,Name FROM tblNames) AS X, (SELECT SUM(Mo+Tu) FROM tblFieldDays WHERE tblFieldDays.NameCode IN (X.NameCode)) AS Y

但是没有用。任何人都可以帮忙吗?谢谢。

4

2 回答 2

1
SELECT  NameCode,
        Name,
        UserFieldDays = SUM(fieldDays.Mo + fieldDays.Tu)
  FROM  tblNames users
        JOIN tblFieldDays fieldDays ON users.NameCode = fieldDays.NameCode
GROUP BY users.NameCode, users.Name
于 2013-05-03T20:03:00.130 回答
0

这可能是您正在寻找的:

SELECT NameCode, Name,
       (SELECT SUM(MO + TU)    
          FROM tblFieldDays Y
         WHERE Y.NameCode IN (X.NameCode))
  FROM tblNames X;

此语句从表 tblNames 中选择所有名称和代码,并使用子选择添加总和。

看看这个小提琴

希望这会有所帮助......干杯!

于 2013-05-03T20:17:09.787 回答