[SQL] SQL 서버 : SUM () 여기서 조항을 포함하여 여러 행의
SQLSQL 서버 : SUM () 여기서 조항을 포함하여 여러 행의
나는 다음과 같은 일을 보이는 테이블이 :
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
여러 항목도, 속성에 청구를 여러 번 청구가있을 것입니다. 예를 들어 임대료 (otherwords에서, 현재의) 속성에 나는에 대한 관심 (년 이상) # 1의 12 배, 그러나 유일한 사람 널의 ENDDATE 가진 사람을 청구 할 수
내가 달성하고 싶습니다 :
PropertyId Amount
--------------------------
1 220
2 80
나는 이런 식으로 뭔가를 시도했다 :
SELECT
propertyId,
SUM() as TOTAL_COSTS
FROM
MyTable
그러나, SUM에 나는 요금의 각 유형에 다시 현재의 양을 가져 오는 여러 선택을 강요 할 것인가? 나는이되고 지저분한을 볼 수 있었다 나는 훨씬 더 간단한 해결책을 바라고 있어요
어떤 아이디어?
해결법
-
==============================
1.이 속성 및 유형 당 합계를 다시 가져올 것이다
이 속성 및 유형 당 합계를 다시 가져올 것이다
SELECT PropertyID, TYPE, SUM(Amount) FROM yourTable GROUP BY PropertyID, TYPE
이 활성 값을 다시 가져올 것이다
SELECT PropertyID, TYPE, SUM(Amount) FROM yourTable WHERE EndDate IS NULL GROUP BY PropertyID, TYPE
이 속성에 대한 합계를 다시 가져올 것이다
SELECT PropertyID, SUM(Amount) FROM yourTable WHERE EndDate IS NULL GROUP BY PropertyID
......
-
==============================
2.이 시도:
이 시도:
SELECT PropertyId, SUM(Amount) as TOTAL_COSTS FROM MyTable WHERE EndDate IS NULL GROUP BY PropertyId
-
==============================
3.당신은 종료 날짜가 null의 각 속성에 대한 (모든 유형의 금액) 합계를 getiing 의미 :
당신은 종료 날짜가 null의 각 속성에 대한 (모든 유형의 금액) 합계를 getiing 의미 :
SELECT propertyId, SUM(Amount) as TOTAL_COSTS FROM MyTable WHERE EndDate IS NULL GROUP BY propertyId
-
==============================
4.소리는 당신이 뭔가를 원하는 좋아 :
소리는 당신이 뭔가를 원하는 좋아 :
select PropertyID, SUM(Amount) from MyTable Where EndDate is null Group by PropertyID
-
==============================
5.WHERE 절은 항상 개념적으로 GROUP BY 이전에 (실행 계획이 분명히, 원하는 것을 할 수있는)에 적용된다. 그것은 쿼리에서 GROUP BY 앞에 오는 방법과 여기에 대한 답변의 대부분의 작품 일이 합산하기 전에 필터의 역할을해야합니다.
WHERE 절은 항상 개념적으로 GROUP BY 이전에 (실행 계획이 분명히, 원하는 것을 할 수있는)에 적용된다. 그것은 쿼리에서 GROUP BY 앞에 오는 방법과 여기에 대한 답변의 대부분의 작품 일이 합산하기 전에 필터의 역할을해야합니다.
또한 그룹 BY 후에 와야 옵션 HAVING 절 알고 있어야합니다. 이는 그룹화 한 후 그룹의 특성 결과를 필터링하는데 사용될 수 - SUM (양)을 갖는 예> 0
-
==============================
6.총계 행을 추가하려면 공통 테이블 식을 사용하여, 100 일에 의해 주문이 필요합니다.
총계 행을 추가하려면 공통 테이블 식을 사용하여, 100 일에 의해 주문이 필요합니다.
With Detail as ( SELECT top 100 propertyId, SUM(Amount) as TOTAL_COSTS FROM MyTable WHERE EndDate IS NULL GROUP BY propertyId ORDER BY TOTAL_COSTS desc ) Select * from Detail Union all Select ' Total ', sum(TOTAL_COSTS) from Detail
from https://stackoverflow.com/questions/1607720/sql-server-sum-of-multiple-rows-including-where-clauses by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL의 모든 조합을 생성 (0) | 2020.06.04 |
---|---|
[SQL] PHP / MySQL의 우편 번호의 근접 검색 (0) | 2020.06.04 |
[SQL] 스키마와 데이터 모두를위한 스크립트를 생성 (0) | 2020.06.04 |
[SQL] 필드는 MySQL의에서 분 값이 어디에서 어떻게 데이터를 선택하려면? (0) | 2020.06.04 |
[SQL] 열 이름 등을 선택 SQL (0) | 2020.06.04 |