Pseudo situatie :
Kolom A geeft een bepaald nummer aan.
Kolom B geeft aan dat iets uit 2 delen bestaat
Kolom C geeft aan de verwachte waarde.
Kolom D geeft aan de werkelijke waarde.
Kolom E geeft aan dat iets van een bepaald type is.
Probleem : De verwachte waarde (c) staat er "dubbel" in bij gesplitste records. Dus het totaal van de 2 gesplitste in plaats van per record.
Wat ik wil is deze uitkomst :
Dus de eerste result row is nummer 1 en 2, de tweede is nummer 3 en 4.
Ik wil dus een SUM van kolom c en d, met een group by op e, het type dus.
Het probleem is dat de SUM dus de "gesplitste" records dubbel telt op de kolom c. Dit is namelijk het totaal van de 2 "gesplitste" records.
Ik kan aan de data niets veranderen, heb al iets geprobeerd met een sub-select maar die vernaggeld mijn group-by waardoor alles weer gesplitst wordt
Dit heb ik nu:
Dit geeft echter als resultaat:
Logisch, want de group- by van x.a veroorzaakt dit. Toch heb ik die wel nodig want anders werkt de sum niet. Hoe los ik dit op?
code:
1
2
3
4
5
6
7
8
| a b c d e 1 a 9 3 1 1 b 9 5 1 2 a 8 7 1 3 a 5 5 2 4 a 7 3 2 4 b 7 4 2 |
Kolom A geeft een bepaald nummer aan.
Kolom B geeft aan dat iets uit 2 delen bestaat
Kolom C geeft aan de verwachte waarde.
Kolom D geeft aan de werkelijke waarde.
Kolom E geeft aan dat iets van een bepaald type is.
Probleem : De verwachte waarde (c) staat er "dubbel" in bij gesplitste records. Dus het totaal van de 2 gesplitste in plaats van per record.
Wat ik wil is deze uitkomst :
code:
1
2
3
| c d e 17 15 1 12 12 2 |
Dus de eerste result row is nummer 1 en 2, de tweede is nummer 3 en 4.
Ik wil dus een SUM van kolom c en d, met een group by op e, het type dus.
Het probleem is dat de SUM dus de "gesplitste" records dubbel telt op de kolom c. Dit is namelijk het totaal van de 2 "gesplitste" records.
Ik kan aan de data niets veranderen, heb al iets geprobeerd met een sub-select maar die vernaggeld mijn group-by waardoor alles weer gesplitst wordt

Dit heb ik nu:
SQL:
1
2
3
4
5
6
| SELECT SUM(x.c) AS c, SUM(x.d) + ISNULL((SELECT SUM(y.d) FROM dbo.Table_1 y WHERE x.a = y.a AND y.b = 'b'),0) AS d , x.e FROM dbo.Table_1 X WHERE x.b = 'a' GROUP BY x.e, x.a |
Dit geeft echter als resultaat:
code:
1
2
3
4
5
| c d e 9 8 1 8 7 1 5 5 2 7 7 2 |
Logisch, want de group- by van x.a veroorzaakt dit. Toch heb ik die wel nodig want anders werkt de sum niet. Hoe los ik dit op?
[Voor 4% gewijzigd door Wijnbo op 26-05-2011 13:26]