我有以下表格:
dbPratiche:
在这里我想要[Provincia contraente](第一栏)和[Provincia aconzia]中[Provincia contraente]的计数。
例如
如果我使用以下查询排列不同的拳柱:
select distinct([Provincia contraente]) from dbPratiche
然后想在下一栏中计算它已经到达第二栏的次数,即[Provincia Agenzia]
简单来说,原型查询:
SELECT DISTINCT( [provincia contraente] ),
Count([provincia agenzia])
FROM dbpratiche
WHERE Distinct([provincia contraente]) = [provincia agenzia]
当然这个查询失败了,但我用连接做了第二个查询:
SELECT DISTINCT( p1.[provincia contraente] ) AS 'PC',
Count(p2.[provincia agenzia])
FROM dbpratiche p1
INNER JOIN dbpratiche p2
ON p1.[provincia contraente] = p2.[provincia contraente]
AND p2.[provincia agenzia] = p1.[provincia contraente]
GROUP BY p1.[provincia contraente]
但没有给我正确的结果。
请帮帮我。
实际表格:
Provincia contraente | Provincia Agenzia
TA TA
CE TA
CE CE
MI FR
MI TA
FR FR
预期结果:
Provincia contraente | Provincia Agenzia
TA 3
CE 1
MI 0
FR 2
EDIT2:
还想添加第一列的计数
Provincia contraente | Provincia Agenzia | cnt Provincia contraente
TA 3 1
CE 1 2
MI 0 2
FR 2 1
我试过了:
我在@ verex的查询中添加了COUNT(dbPratiche.[Provincia contraente])
SELECT T1.[provincia contraente],
Count(dbpratiche.[provincia agenzia]),
Count(dbpratiche.[provincia contraente])
FROM dbpratiche
RIGHT JOIN (SELECT DISTINCT [provincia contraente]
FROM dbpratiche) AS T1
ON dbpratiche.[provincia agenzia] = T1.[provincia contraente]
GROUP BY T1.[provincia contraente]
但得到了[Provincia Agenzia]的数量
plz help
答案 0 :(得分:3)
您应该可以使用group by statement。
select [Provincia contraente],count([Provincia Agenzia])
from dbPratiche where [Provincia contraente]=[Provincia Agenzia]
group by [Provincia contraente]
答案 1 :(得分:3)
此查询还显示0个值:
SELECT [provincia contraente],
Sum(CASE
WHEN [provincia contraente] = [provincia agenzia] THEN 1
ELSE 0
END)
FROM dbpratiche
GROUP BY [provincia contraente]
UPD:以下是适用于更新问题的查询:
SELECT T1.[provincia contraente],
Count(dbpratiche.[provincia agenzia]),
Max(T1.cnt)
FROM dbpratiche
RIGHT JOIN (SELECT [provincia contraente],
Count(*) AS Cnt
FROM dbpratiche
GROUP BY [provincia contraente]) AS T1
ON dbpratiche.[provincia agenzia] = T1.[provincia contraente]
GROUP BY T1.[provincia contraente]
答案 2 :(得分:2)
您不必在此使用distinct
。分组已为您获取分组列的唯一值。
试试这个
select [Provincia contraente], count([Provincia Agenzia])
from dbPratiche
where [Provincia contraente] = [Provincia Agenzia]
group by [Provincia contraente]