저는이 포럼에 참여한 모든 사람들에게 엄청난 감사를 드리고 싶습니다. 지식과 예제의 과다한은 [프로젝트 이름을 여기에 삽입하기] 전날 오전 3시에 놀라운 자료 였고 벽에 올랐습니다 ... LOL.월별 및 분기 별 쿼리 주문
저는 달과 분기별로 분류 된 데이터의 정규 보고서로 실행되는 간단한 쿼리를 만들었고 올바른 값을 가져옵니다. 그러나 주문에 문제가 있습니다.
SELECT
CASE DATEPART(mm, dtDate)
WHEN 01 THEN 'JAN' WHEN 02 THEN 'FEB' WHEN 03 THEN 'MAR'
WHEN 04 THEN 'APR' WHEN 05 THEN 'MAY' WHEN 06 THEN 'JUN'
WHEN 07 THEN 'JUL' WHEN 08 THEN 'AUG' WHEN 09 THEN 'SEP'
WHEN 10 THEN 'OCT' WHEN 11 THEN 'NOV' WHEN 12 THEN 'DEC'
END
AS 'Month',
SUM(CASE WHEN sAccount = 'DM' AND sChannel = 'DM' THEN mAmount
ELSE 0 END) AS 'DM',
SUM(CASE WHEN sAccount = 'DM' AND sChannel = 'TM' THEN mAmount
ELSE 0 END) AS 'TM',
SUM(CASE WHEN sAccount = 'FI' AND sChannel = 'FI' THEN mAmount
ELSE 0 END) AS 'FI',
SUM(CASE WHEN sAccount = 'FI' AND sChannel = 'GR' THEN mAmount
ELSE 0 END) AS 'GR',
SUM(CASE WHEN sAccount = 'NM' THEN mAmount
ELSE 0 END) AS 'NM',
SUM(mAmount) AS 'Total'
FROM Contrib
WHERE iDeleted = '0'
GROUP BY DATEPART(mm, dtDate)
UNION
SELECT
CASE DATEPART(qq, dtDate)
WHEN 01 THEN 'Q1'
WHEN 02 THEN 'Q2'
WHEN 03 THEN 'Q3'
WHEN 04 THEN 'Q4'
END
AS 'Month',
SUM(CASE WHEN sAccount = 'DM' AND sChannel = 'DM' THEN mAmount
ELSE 0 END) AS 'DM',
SUM(CASE WHEN sAccount = 'DM' AND sChannel = 'TM' THEN mAmount
ELSE 0 END) AS 'M',
SUM(CASE WHEN sAccount = 'FI' AND sChannel = 'FI' THEN mAmount
ELSE 0 END) AS 'FI',
SUM(CASE WHEN sAccount = 'FI' AND sChannel = 'GR' THEN mAmount
ELSE 0 END) AS 'GR',
SUM(CASE WHEN sAccount = 'NM' THEN mAmount
ELSE 0 END) AS 'NM',
SUM(mAmount) AS 'Total'
FROM Contrib
WHERE iDeleted = '0'
GROUP BY DATEPART(qq, dtDate)
: 여기
Month DM TM FI GR NM Total
APR 0.00 0.00 1230059.00 6395.00 1275636.61 2575700.61
AUG 62750.35 9159.00 151561.28 15020.88 1248286.28 1532631.93
FEB 0.00 0.00 535000.00 0.00 587337.00 1222337.00
JAN 0.00 0.00 50000.00 0.00 0.00 50000.00
JUL 258362.92 49541.00 359178.50 19674.33 803417.96 1933347.71
JUN 213716.34 141050.00 746302.28 25007.68 2551383.23 3962339.23
MAR 0.00 0.00 614146.00 5611.00 2920193.41 3541744.41
MAY 0.00 45796.00 101160.00 15473.18 1356653.55 1931181.73
NOV 26213.00 61683.00 130270.90 13099.75 496460.05 729362.84
OCT 198565.10 189847.00 626951.11 29517.00 978797.85 2043531.20
Q1 0.00 0.00 1199146.00 5611.00 3507530.41 4814081.41
Q2 213716.34 186846.00 2077521.28 46875.86 5183673.39 8469221.57
Q3 583359.64 194764.00 709105.77 72092.94 5322894.95 7483637.58
Q4 224778.10 251530.00 757222.01 42616.75 1475257.90 2772894.04
SEP 262246.37 136064.00 198365.99 37397.73 3271190.71 4017657.94
나에게 알파벳 순으로 결과를 얻는 쿼리입니다 :
Month DM TM FI GR NM Total
JAN 0 0 50000 0 0 50000
FEB 0 0 535000 0 620043.77 1255043.77
MAR 0 0 614146 5611 3016237.91 3637788.91
Q1 0 0 1199146 5611 3636281.68 4942832.68
APR 0 0 1230059 6395 1278525.79 2578589.79
MAY 0 45796 101160 15473.18 1357877.7 1932405.88
JUN 213716.34 141050 746302.28 25007.68 2552277.35 3963233.35
Q2 213716.34 186846 2077521.28 46875.86 5188680.84 8474229.02
JUL 258362.92 49541 359178.5 19674.33 803987.99 1928917.74
AUG 62750.35 9159 151561.28 15020.88 1248746.28 1533091.93
SEP 262246.37 136064 198365.99 37397.73 3271355.71 4017822.94
Q3 583359.64 194764 709105.77 72092.94 5324089.98 7479832.61
OCT 198565.1 189847 626951.11 29517 978947.85 2048681.2
NOV 22391 53652 155140.84 11444.75 470482.95 714747.68
Q4 220956.1 243499 782091.95 40961.75 1449430.8 2763428.88
그러나, 이것이 내가 집착 곳이다 : 이것은 내가 반환하는 쿼리 결과를 원하는 것입니다
질의에 order by 절을 추가하는 여러 가지 방법을 시도했지만 성공하지 못했습니다. 일반적으로 Msg 104, Level 16 ... "ORDER BY 항목은 선택 목록에 나타나야합니다. 유엔을 포함하다 ION, INTERSECT 또는 EXCEPT 연산자 "). 나는 나의 문제가 노동 조합과 2 개의 다른 datepart 함수 (월 대 분기) 때문인 것으로 의심된다.
아직 초록색이기 때문에이 쿼리를 구성하는 데보다 효율적인 방법이 있는지 또는 내 걸림돌이 어디에 있는지 알 수 있다고 생각되면 알려 주시기 바랍니다. .
감사합니다.
팻
당신이 당신의 쿼리에서 "1 BY ORDER"간단한 단지를 시도하여 쿼리를 적응
ROLLUP
사용하여이 솔루션을 함께했다? – abhi
@abhi 잘, 하나, [결코 사용 ORDER BY] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/06/bad-habits-to-kick-order-by-ordinal. aspx). 둘째, 어떻게 도움이 될까요? 첫 번째 열은 월 이름입니다. 나는 목표가 APR, AUG, FEB에 의한 주문이라고 생각하지 않는다. –