Jim*_*mmy 25 sql t-sql sql-server aggregate
我有一个类似于以下内容的表:
PropertyID Amount Type EndDate
--------------------------------------------
1 100 RENT null
1 50 WATER null
1 60 ELEC null
1 10 OTHER null
2 70 RENT null
2 10 WATER null
Run Code Online (Sandbox Code Playgroud)
将向物业收取多个物品,并且还会多次收费.例如,RENT可以向属性#1收费12次(超过一年),但是我唯一感兴趣的是ENDDATE为null(换句话说,当前)
我想实现:
PropertyId Amount
--------------------------
1 220
2 80
Run Code Online (Sandbox Code Playgroud)
我试图做这样的事情:
SELECT
propertyId,
SUM() as TOTAL_COSTS
FROM
MyTable
Run Code Online (Sandbox Code Playgroud)
但是,在SUM中我会被迫多次选择带回每种类型电荷的当前金额吗?我可以看到这变得混乱,我希望有一个更简单的解决方案
有任何想法吗?
Adr*_*der 45
这将带回每个属性和类型的总计
SELECT PropertyID,
TYPE,
SUM(Amount)
FROM yourTable
GROUP BY PropertyID,
TYPE
Run Code Online (Sandbox Code Playgroud)
这将仅带回活动值
SELECT PropertyID,
TYPE,
SUM(Amount)
FROM yourTable
WHERE EndDate IS NULL
GROUP BY PropertyID,
TYPE
Run Code Online (Sandbox Code Playgroud)
这将带回物业的总数
SELECT PropertyID,
SUM(Amount)
FROM yourTable
WHERE EndDate IS NULL
GROUP BY PropertyID
Run Code Online (Sandbox Code Playgroud)
......
试试这个:
SELECT
PropertyId,
SUM(Amount) as TOTAL_COSTS
FROM
MyTable
WHERE
EndDate IS NULL
GROUP BY
PropertyId
Run Code Online (Sandbox Code Playgroud)
你的意思是EndDate为null的每个属性的getiing sum(所有类型的数量):
SELECT propertyId, SUM(Amount) as TOTAL_COSTS
FROM MyTable
WHERE EndDate IS NULL
GROUP BY propertyId
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
191526 次 |
| 最近记录: |