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
我有这个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