Ik heb de volgende SQL query (Microsoft SQL Server 2005):
Deze query geeft bijv. als resultset:
Wat hier gebeurd is dat de het verschil wordt berekend in percentage tussen de 1ste en de 5e kolom, het resultaat (percentage) staat dan in de 6e kolom.
De waarde in de 1ste kolom is de nieuwe waarde, de waarde in kolom 5 is de oude waarde.
Dus (als voorbeeld voor het derde record): 6000-4900 = (1100 / 4900)*100 = 22,44897 afgerond zou dat dus 22,45 moeten zijn, maar SQL rond dit af naar 22,44 (zie hierboven).
Dat klopt dus niet, ik heb al de query geprobeerd aan te passen met CAST() en ROUND() maar dat lukt ook niet...
Iemand een idee...?
Als het kan graag even een reactie puur op het afrondprobleem... (query moet ik misschien later nog perfectioneren)
SQL:
1
2
3
4
5
6
7
| SET DATEFORMAT dmy SELECT a.omzet_bedrag, a.omzet_jaarmaand, a.omzet_winkel_uid, a.omzet_ksp_uid, (SELECT TOP 1 omzet_bedrag FROM omzetten b WHERE b.omzet_jaarmaand = '01/10/2006' AND b.omzet_winkel_uid = a.omzet_winkel_uid AND b.omzet_ksp_uid = a.omzet_ksp_uid) AS omzet_bedrag_nieuw, CAST(((omzet_bedrag-(SELECT TOP 1 omzet_bedrag FROM omzetten b WHERE b.omzet_jaarmaand = '01/10/2006' AND b.omzet_winkel_uid = a.omzet_winkel_uid AND b.omzet_ksp_uid = a.omzet_ksp_uid))/(SELECT TOP 1 omzet_bedrag FROM omzetten b WHERE b.omzet_jaarmaand = '01/10/2006' AND b.omzet_winkel_uid = a.omzet_winkel_uid AND b.omzet_ksp_uid = a.omzet_ksp_uid)*100) AS float) AS percentage FROM omzetten a WHERE a.omzet_jaarmaand = '01/10/2007' AND a.omzet_bedrag IS NOT NULL ORDER BY percentage |
Deze query geeft bijv. als resultset:
3500,00 2007-10-01 00:00:00 316 44 NULL NULL 340,00 2007-10-01 00:00:00 37 36 380,00 -10,52 6000,00 2007-10-01 00:00:00 318 45 4900,00 22,44
Wat hier gebeurd is dat de het verschil wordt berekend in percentage tussen de 1ste en de 5e kolom, het resultaat (percentage) staat dan in de 6e kolom.
De waarde in de 1ste kolom is de nieuwe waarde, de waarde in kolom 5 is de oude waarde.
Dus (als voorbeeld voor het derde record): 6000-4900 = (1100 / 4900)*100 = 22,44897 afgerond zou dat dus 22,45 moeten zijn, maar SQL rond dit af naar 22,44 (zie hierboven).
Dat klopt dus niet, ik heb al de query geprobeerd aan te passen met CAST() en ROUND() maar dat lukt ook niet...
Iemand een idee...?
Als het kan graag even een reactie puur op het afrondprobleem... (query moet ik misschien later nog perfectioneren)