, 당신은 내가 약 5 ~ 6 시간 문제 얻을 수 있도록 내가 할 수 아니에요, 그래서 더 큰 SQL 쿼리와 숙련 매우 높은 아니에요 나에게 을 도울 수 있습니다 조인 :/PIVOT 문제와 나는 희망
을 그것은가 집계 함수 나 GROUP BY 절 중 하나에 포함되지 않기 때문에
열 'pvtMonth.1'선택 목록에서 유효 입니다 : SQL 서버 2008에서이 오류의 얻을.
'j_sumzeit'열 이름이 잘못되었습니다.
'j_sumzeit'열 이름이 잘못되었습니다.
내 쿼리 : 몇 가지 예를 들어 데이터
테이블 구조가 매우 나쁜 그러나 그들은 외부 회사로부터이기 때문에 내가 그들을 변경할 수 없습니다와
SELECT
kostenstelle_nr,
kostenstelle_name,
[1] AS Jan,
[2] AS Feb,
[3] AS Mrz,
[4] AS Apr,
[5] AS Mai,
[6] AS Jun,
[7] AS Jul,
[8] AS Aug,
[9] AS Sep,
[10] AS Okt,
[11] AS Nov,
[12] AS Dez,
SUM (j_sumzeit) AS [2011],
SUM (vj_sumzeit) AS [2010],
ROUND(100 - ((vj_sumzeit/j_sumzeit) *100) , 0) AS [diff]
FROM
(
SELECT
dbo.kostenstelle.kostenstelle_nr,
dbo.kostenstelle.kostenstelle_name,
SUM (j_sumzeitpromo) AS j_sumzeit,
SUM (vj_sumzeitpromo) AS vj_sumzeit,
MONTH (j_datum) AS TMonth
FROM
dbo.kostenstelle
LEFT JOIN
(
SELECT
dbo.def.def_kstnr AS j_kstnr,
dbo.def.def_datum AS j_datum,
SUM (dbo.def.def_zeit) AS j_sumzeitpromo,
COUNT (dbo.def.def_zeit) AS j_anzahl
FROM
dbo.def
WHERE
YEAR (dbo.def.def_datum) = 2011
AND dbo.def.def_auknr > 215
GROUP BY
dbo.def.def_kstnr,
dbo.def.def_datum
) jahr
ON j_kstnr = dbo.kostenstelle.kostenstelle_nr
LEFT JOIN
(
SELECT
dbo.def.def_kstnr AS vj_kstnr,
dbo.def.def_datum AS vj_datum,
SUM (dbo.def.def_zeit) AS vj_sumzeitpromo,
COUNT (dbo.def.def_zeit) AS vj_anzahl
FROM
dbo.def
WHERE
YEAR (dbo.def.def_datum) = 2010
AND dbo.def.def_auknr > 215
GROUP BY
dbo.def.def_kstnr,
dbo.def.def_datum
) vorjahr
ON j_kstnr = dbo.kostenstelle.kostenstelle_nr
GROUP BY
dbo.kostenstelle.kostenstelle_nr,
dbo.kostenstelle.kostenstelle_name,
MONTH (j_datum)
) source
PIVOT
(
SUM(j_sumzeit)
FOR TMonth
IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])
) AS pvtMonth
GROUP BY
kostenstelle_nr,
kostenstelle_name
테이블 .
|-----------------------------------------------|
| def_kstnr | def_zeit | def_datum | def_auknr |
|-----------------------------------------------|
| 100 | 3.2 | 2011-11-02 | 245 |
| 110 | 2.8 | 2011-02-03 | 265 |
| 120 | 5.4 | 2011-11-04 | 250 |
| 130 | 2.4 | 2011-08-05 | 280 |
| 140 | 4.9 | 2011-09-06 | 300 |
| 150 | 1.5 | 2011-10-07 | 320 |
| 160 | 2.6 | 2011-12-08 | 450 |
|-----------------------------------------------|
|-------------------------------------------------------|
| kostenstelle_id | kostenstelle_nr | kostenstelle_name |
|-------------------------------------------------------|
| 1 | 245 | KstTst1 |
| 2 | 265 | KstTst1 |
| 3 | 250 | KstTst1 |
| 4 | 280 | KstTst1 |
| 5 | 300 | KstTst1 |
| 6 | 320 | KstTst1 |
| 7 | 450 | KstTst1 |
|-------------------------------------------------------|
결과
|--------------------------------------------------------------------------------------------------------| | def_kstnr | Jan | Feb | Mrz | Apr | Mai | Jun | Jul | Aug | Sep | Okt | Nov | Dez | 2011 | 2010 | diff | |--------------------------------------------------------------------------------------------------------| | 100 | 8.4 | 3.4 | 2.7 | 9.5 | 3.5 | 7.4 | 3.4 | 1.2 | 7.5 | 3.4 | 3.2 | 7.5 | 61.1 | 47.5 | 22 | | 110 | 4.4 | 2.8 | 6.5 | 2.5 | 1.4 | 2.4 | 4.4 | 3.7 | 2.4 | 7.7 | 1.7 | 6.4 | 46.3 | 32.2 | 30 | ... |--------------------------------------------------------------------------------------------------------|
가 대단히 감사합니다 (위의 예제 데이터에서 출발 할 수 번호)이과 같아야합니다. 더 많은 정보가 필요하다면 - 나는 그들에게 즐거움을 줄 것이다 :
'GROUP'을 사용하여 선택한 항목 및 집계에 많은 문제가 있습니다. 나는 당신이 그 오류 코드를 얻지 못했지만 놀랐다. 그러나 나는 일단 다른 문제들이 처리되면 당신이 생각할 것이다. – JNK
오류가 발생하면 찾아서 해결할 수 있기를 바랍니다. 감사합니다. – Ueli