请参考图片查看我们的表结构和预期输出。我需要表1中的所有行以及一个新列,该列给出了第二个表中每个批次ID的计划编号计数。
答案 0 :(得分: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。
我个人更喜欢第一个,因为它很好地涵盖了两个案例。
答案 1 :(得分: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