请参阅图像以了解我们的表结构和预期输出。我需要表 1 中的所有行以及一个新列,该列给出第二个表中每个批次 id 的计划编号计数。
问问题
59 次
2 回答
0
您需要加入表(左联接更好,因为它会从您没有计划的 1 开始计算未命中行),然后是一个组
SELECT
T1.[Batch Id],
T1.[Batch Name],
T1.[Date],
T1.[Status],
COUNT(T2.PlanNUmber) AS PLANCOUNT
FROM
Table1 T1
LEFT JOIN Table2 T2 ON T1.[Batch Id] = T2.[Batch Id]
GROUP BY
T1.[Batch Id],
T1.[Batch Name],
T1.[Date],
T1.[Status]
正如我所说,如果您执行 LEFT JOIN,那么它将选择没有计划的批次,但如果您确定 T1 中的批次中没有行且 T2 中没有行,那么您可以使用 INNER JOIN。
我个人更喜欢第一个,因为它很好地涵盖了这两种情况。
于 2013-09-12T03:25:28.000 回答
0
它看起来很简单GROUP BY
:
SELECT T1.[Batch Id], BatchName, Date, Status, COUNT(PlanNumber) AS PLANCOUNT
FROM Table1 T1
JOIN Table2 T2 ON T1.[Batch Id] = T2.[Batch Id]
GROUP BY T1.[Batch Id], BatchName, Date, Status
于 2013-09-12T03:25:39.687 回答