SQL 获取 SQL 查询中每个项目的计数

SQL Get count of each item within a SQL query

我有这个table

ID PhoneID PhoneName Active Status
1 1 a 1 1
2 1 b 0 2
3 2 c 1 1
4 2 d 1 1
5 2 e 0 3
6 3 f 1 1
7 3 g 1 1
8 3 h 1 1
9 4 i 0 4
10 4 j 1 1

并且想进行查询以给出如下所示的结果。我想获取 Status = 1 的所有行。我还想计算 PhoneID 的总数并将其设为名为 [=25 的列=]查询数量.

ID PhoneID PhoneName Active Status Quantity
1 1 a 1 1 2
3 2 c 1 1 3
4 2 d 1 1 3
6 3 f 1 1 3
7 3 g 1 1 3
8 3 h 1 1 3
10 4 j 1 1 2

到目前为止,我已经尝试了一个查询,但没有显示正确的结果。

SELECT ID, PhoneID, PhoneName, Active, Status, (SELECT Count(PhoneID) FROM Phones)
FROM Phones
WHERE Status = 1

SELECT Count(PhoneID) FROM Phones 没有 WHERE 子句来将其限制为您想要的状态。

您需要关联您的子查询,试试:

SELECT ID, PhoneID, PhoneName, Active, Status,
  (SELECT Count(*) FROM Phones p2 WHERE p2.PhoneId = p.PhoneId) Quantity
FROM Phones p
WHERE Status = 1;

您可以使用子查询执行此操作,其中 returns 每个 PhoneID 的计数:

SELECT t.ID, t.PhoneID, t.PhoneName, t.Active, t.Status, q.[Quantity]
FROM Phones as t
inner join
(
   select PhoneID, COUNT(PhoneID) as [Quantity]
   from Phones
   group by PhoneID
) as q
on q.[PhoneID] = t.[PhoneID]
WHERE t.Status = 1