Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[SQL] Hoe som van deze query berekenen?

Pagina: 1
Acties:

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 17-11 00:43
Ik heb de volgende SQL query (Microsoft SQL Server 2005):
SQL:
1
2
3
4
5
6
7
8
9
10
SET DATEFORMAT dmy
SELECT 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:
NULL
-10,52
22,44


Hoe kan ik hiervan de som in de query laten berekenen?
In dit geval zou de SOM dus 11,92 moeten zijn.
Normaal doe je dit natuurlijk met SELECT SUM() ....

Ik heb dat geprobeerd maar dan krijg ik een foutmelding dat dat niet mogelijk is... net zoals COUNT()

[ Voor 0% gewijzigd door Urk op 24-03-2008 19:13 . Reden: query beter leesbaar gemaakt ]


  • Exterazzo
  • Registratie: Mei 2000
  • Laatst online: 19:34

Exterazzo

Qeasy

Ik gok dat je een GROUP BY component aan je query moet toevoegen.

Audentia


  • pistole
  • Registratie: Juli 2000
  • Laatst online: 19-11 20:41

pistole

Frutter

hoewel ik je query onleesbaar vind (en dat er wellicht andere mogelijkheden zijn) is dit misschien een oplossing:

-van je query een view maken
-sum() en count() functies loslaten op de view

[ Voor 3% gewijzigd door pistole op 24-03-2008 18:47 ]

Ik frut, dus ik epibreer


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 17-11 00:43
Ik heb de query al als Stored Procedure, maar daaromheen een SUM() functie loslaten werkt niet.

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 19-11 20:41

pistole

Frutter

nee, dat klopt dat dat niet kan. Waarom een SP? Of wordt er meer in gedaan dan alleen deze query?

Ik frut, dus ik epibreer


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 17-11 00:43
pistole schreef op maandag 24 maart 2008 @ 21:18:
nee, dat klopt dat dat niet kan. Waarom een SP? Of wordt er meer in gedaan dan alleen deze query?
Stored Procedure puur voor het gemak. Ik begrijp niet precies welke oplossing jij voor ogen hebt. Is er ergens een voorbeeld hiervan online dat je weet of kun je het nader toelichten misschien? _/-\o_

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 19-11 20:41

pistole

Frutter

voorbeeld kan ik niet snel geven maar stel:

Van de query die je hebt maak je een view (naam: vMyView); die view gedraagt zich in andere queries gewoon als een tabel.

Om dus de SUM() te vinden van het resultaat uit je query, kan je dus het volgende doen:

select SUM(kolomnaam) from vMyView [where bladiebla]

of; voor de COUNT(*):

select COUNT(*) from vMyView [where bladiebla]

Of combinatie hiervan.

edit:

indien nodig kan je nog een ISNULL gebruiken om NULLs te vervangen; bij SUM() zou je ISNULL(kolomnaam, 0) kunnen doen

[ Voor 13% gewijzigd door pistole op 24-03-2008 21:30 ]

Ik frut, dus ik epibreer


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 17-11 00:43
Top, dank voor je uitleg! Lees inmiddels deze pagina ook even door:
http://www.w3schools.com/sql/sql_view.asp

Ik zit alleen even met argumenten die ik aan mijn stored procedure gaf, kan ik die in een view ook gebruiken?
Ga zowieso even puzzelen...

Edit:
Hmmmm...kwam dit artikel tegen via Google te zoeken op view parameters:

http://www.informit.com/a...le.aspx?p=130855&seqNum=3

[ Voor 22% gewijzigd door Urk op 24-03-2008 21:59 ]


  • pistole
  • Registratie: Juli 2000
  • Laatst online: 19-11 20:41

pistole

Frutter

je kan (als je query het toestaat) proberen om deze velden mee te selecteren in je view, zodat je daar later op kan filteren (in de where clause van de query over de view)

Ik frut, dus ik epibreer

Pagina: 1