我有一个查询,该查询检索一条记录,该记录可以有多个与其关联的表行。
示例:
record id: PPP-2024-00975
is associated to 3 permits: 1495, 1496, 1497
这样检索:
RECORD_ID PERMITNO
PPP-2024-00975 1495
PPP-2024-00975 1496
PPP-2024-00975 1497
第三列名为“permit_count”,每行显示 3:
RECORD_ID PERMITNO PERMIT_COUNT
PPP-2024-00975 1495 3
PPP-2024-00975 1496 3
PPP-2024-00975 1497 3
我想了解如何更改计数,而不是每行显示总计数 3,而是每行显示 1
这是我的基本查询:
SELECT
RECORD_ID
, PERMITNO
, PERMIT_COUNT
FROM PERMIT A
INNER JOIN PERMITDETAIL D
ON A.CODE = D.CODE
AND A.ID1 = D.ID1
AND A.ID2 = D.ID2
AND A.ID3 = D.ID3
INNER JOIN TABLE_VALUE TV
ON A.CODE = TV.CODE
AND A.ID1 = TV.ID1
AND A.ID2 = TV.ID2
AND A.ID3 = TV.ID3
WHERE
AND A.STATUS = 'A'
AND A.GROUP = 'Permitting'
AND A.TYPE = 'Annual'
AND YEAR(A.FILEDATE) <= YEAR(GETDATE()-10)
您可以使用窗口函数
count over()
计算出总数,然后除以它以返回原始值,例如
PERMIT_COUNT / COUNT(*) OVER (PARTITION BY RECORD_ID)