0
I는 다음과 같습니다 쿼리가 있습니다SQL 실행중인 총
SELECT b.HH,
b.TotalRevenues,
b.TotalOperatingExpenses,
b.TotalAUA,
(b.TotalRevenues -b.TotalOperatingExpenses) AS Profit,
((b.TotalRevenues -b.TotalOperatingExpenses)/sum((b.TotalRevenues -b.TotalOperatingExpenses))) AS percentProfit FROM
(SELECT * FROM
(SELECT CASE
WHEN (LTRIM(RTRIM(v.ISM_HH_KEY)) <> '')--OR
--(LTRIM(RTRIM(v.ISM_HH_KEY)) IS NOT NULL)
THEN LTRIM(RTRIM(v.ISM_HH_KEY))
ELSE LEFT(LTRIM(RTRIM(v.ACCOUNT)), 6)
END AS 'HH', [WealthDB].[dbo].[WF_PM_SUM_DB].account AS 'Account', (sum(DB_1_1) + sum(DB_1_2) + sum(DB_1_3) + sum(DB_1_5) + sum(DB_2_1_1) + sum(DB_2_1_2) + sum(DB_2_2_1) + sum(DB_2_2_2)+SUM(DB_3_1)) AS 'TotalRevenues', SUM(DB_4) AS 'TotalOperatingExpenses', AVG(DB_10) AS 'TotalAUA'
FROM [WealthDB].[dbo].[WF_PM_SUM_DB]
INNER JOIN
(SELECT DISTINCT ISM_HH_Key, account, Municipality
FROM [WealthDB].[dbo].[WF_PM_ACCT_det_DB]) AS v ON [WealthDB].[dbo].[WF_PM_SUM_DB].Account = v.Account
WHERE [WealthDB].[dbo].[WF_PM_SUM_DB].yearmonth > '201512'
GROUP BY v.account, V.ISM_HH_Key,[WealthDB].[dbo].[WF_PM_SUM_DB].account, v.Municipality -- (
) a
GROUP BY a.HH, a.Account, a.HH, a.TotalRevenues, a.TotalOperatingExpenses,a.TotalAUA
HAVING a.TotalAUA > 0
AND a.TotalRevenues>0) b
GROUP BY b.HH,
b.TotalRevenues,
b.TotalOperatingExpenses,
b.TotalAUA
HAVING (b.TotalRevenues -b.TotalOperatingExpenses) > 0
ORDER BY profit ASC
내가 percaentage 이익은 계산되지 않는
Account Revenue Expenses Profit PercentageProfit
XXXX $100,000 $20000 $15,000 1
YYY $90000 $20000 $14,000 1
과 같은 출력을 얻을 수를 모든 열에서 1을 보여 주며 다른 열의 백분율 이익에 대한 누적 합계를 제공하는 또 다른 열이 필요합니다.
Account Revenue Expenses Profit PercentageProfit RunningTotal
XXXX $100,000 $20000 $15,000 0.32% 0.32%
YYY $90000 $20000 $14,000 0.29% 0.61%
내가 일하는 SQL 서버는 2000 버전이므로 순위 기능을 사용할 수 없습니다. 어떤 제안. 나는 내가 이익을 얻으려고 이익이되는 칼럼에 무제한의 액수를 할 수 없도록 나는 절을 사용할 수 있다고 생각하지 않는다. 우리가 실행중인 총 열이 나면 또한
, 내가
CASE WHEN RUNNINGTOTAL < 1% THEN 'TOP 1%'
CASE WHEN RUNNINGTOTAL >1% AND <20% THEN '1-20%'
END AS 'SEGMENT'
같은 경우 문을 사용할 수 있습니다
CTE를 들어
으로 최종
Select
을 대체 SQL 서버의 이전 버전을 사용하는 경우이 문제는 SQL Server 2000의 – SqlZim을에 @ SqlZim - 업데이트되었습니다. 아직 '2000'에 대한 쿼리가 확실하지 않습니다. \ 2 년 뒤 경력을 시작했습니다. D –
예, 2000 년에 까다로워졌습니다. 그 밖의 다른 방법은 확실하지 않습니다. 당신이 올린 내용. Over()는 2008 년에 소개되었지만 업데이트에서 잘라내 기/붙여 넣기 오류라고 생각합니다. – SqlZim