Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 General SQL Server Forums
 New to SQL Server Programming
 howto first multiply then sum results

Author  Topic 

bnf1
Starting Member

7 Posts

Posted - 2011-12-09 : 06:40:29
SELECT Artikel.Prijs * OpdrachtArtikel.aantal as materiaalkosten, OpdrachtArtikel.opdrachtnr, Artikel.artikelnr,
Artikel.omschrijving, Artikel.Prijs, Auto.kenteken, Klant.voorletters, Klant.tussenvoegsel, Klant.achternaam

From Auto JOIN Klant on Klant.klantnr =Auto.klantnr
JOIN Opdracht on Opdracht.kenteken = Auto.kenteken
JOIN OpdrachtArtikel on OpdrachtArtikel.opdrachtnr = Opdracht.opdrachtnr
JOIN Artikel on Artikel.artikelnr = Artikel.artikelnr
group by OpdrachtArtikel.opdrachtnr)

the result is:

materiaalkosten opdrachtnr artikelnr omschrijving Prijs kenteken voorletters tussenvoegsel achternaam
110.00 1 12 band 55.00 12-JS-PP HCG Pieterse
30.00 1 33 wieldop 15.00 12-JS-PP HCG Pieterse
24.00 1 45 ruitenwisser voor 12.00 12-JS-PP HCG Pieterse
5.00 1 1526 Bougies 2.50 12-JS-PP HCG Pieterse
1.00 1 1527 Keerringpakking 0.50 12-JS-PP HCG Pieterse
25.00 1 1705 Oliefilter 12.50 12-JS-PP HCG Pieterse
45.00 1 5071 Olie 22.50 12-JS-PP HCG Pieterse
46.50 1 9006 Interieurschoef (Goud) 46.50 12-JS-PP HCG Pieterse
220.00 1 12 band 55.00 12-JS-PP HCG Pieterse
60.00 1 33 wieldop 15.00 12-JS-PP HCG Pieterse
48.00 1 45 ruitenwisser voor 12.00 12-JS-PP HCG Pieterse
10.00 1 1526 Bougies 2.50 12-JS-PP HCG Pieterse
2.00 1 1527 Keerringpakking 0.50 12-JS-PP HCG Pieterse
50.00 1 1705 Oliefilter 12.50 12-JS-PP HCG Pieterse
90.00 1 5071 Olie 22.50 12-JS-PP HCG Pieterse
46.50 1 9006 Interieurschoef (Goud) 46.50 12-JS-PP HCG Pieterse
55.00 1 12 band 55.00 12-JS-PP HCG Pieterse
15.00 1 33 wieldop 15.00 12-JS-PP HCG Pieterse
12.00 1 45 ruitenwisser voor 12.00 12-JS-PP HCG Pieterse
2.50 1 1526 Bougies 2.50 12-JS-PP HCG Pieterse
0.50 1 1527 Keerringpakking 0.50 12-JS-PP HCG Pieterse
12.50 1 1705 Oliefilter 12.50 12-JS-PP HCG Pieterse
22.50 1 5071 Olie 22.50 12-JS-PP HCG Pieterse
46.50 1 9006 Interieurschoef (Goud) 46.50 12-JS-PP HCG Pieterse
55.00 2 12 band 55.00 32-SKR-1 J de Boer
15.00 2 33 wieldop 15.00 32-SKR-1 J de Boer
12.00 2 45 ruitenwisser voor 12.00 32-SKR-1 J de Boer
2.50 2 1526 Bougies 2.50 32-SKR-1 J de Boer
0.50 2 1527 Keerringpakking 0.50 32-SKR-1 J de Boer
12.50 2 1705 Oliefilter 12.50 32-SKR-1 J de Boer
22.50 2 5071 Olie 22.50 32-SKR-1 J de Boer
46.50 2 9006 Interieurschoef (Goud) 46.50 32-SKR-1 J de Boer
220.00 3 12 band 55.00 VR-MN-65 BDM Coolen
60.00 3 33 wieldop 15.00 VR-MN-65 BDM Coolen
48.00 3 45 ruitenwisser voor 12.00 VR-MN-65 BDM Coolen
10.00 3 1526 Bougies 2.50 VR-MN-65 BDM Coolen
2.00 3 1527 Keerringpakking 0.50 VR-MN-65 BDM Coolen
50.00 3 1705 Oliefilter 12.50 VR-MN-65 BDM Coolen
90.00 3 5071 Olie 22.50 VR-MN-65 BDM Coolen
186.00 3 9006 Interieurschoef (Goud) 46.50 VR-MN-65 BDM Coolen

now i need to get a SUM materiaalkosten for eatch opdrachtnr


when i try to SUM(materiaalkosten)

and GROUP BY Opdracht.opdrachtnr

MSSQL response is

Msg 207, Level 16, State 1, Line 2
Invalid column name 'materiaalkosten'.

wat should i do to fix this?

Thnx,

Frank

lappin
Posting Yak Master

182 Posts

Posted - 2011-12-09 : 07:11:13
materiaalkosten is an alias. If you want to refer to it you can include your query as a subquery i.e.

Select SUM(materiaalkosten), .....

from (
SELECT Artikel.Prijs * OpdrachtArtikel.aantal as materiaalkosten, OpdrachtArtikel.opdrachtnr, Artikel.artikelnr,
Artikel.omschrijving, Artikel.Prijs, Auto.kenteken, Klant.voorletters, Klant.tussenvoegsel, Klant.achternaam

From Auto JOIN Klant on Klant.klantnr =Auto.klantnr
JOIN Opdracht on Opdracht.kenteken = Auto.kenteken
JOIN OpdrachtArtikel on OpdrachtArtikel.opdrachtnr = Opdracht.opdrachtnr
JOIN Artikel on Artikel.artikelnr = Artikel.artikelnr
)
) sub
GROUP BY ......

Alternatively you could use OVER PARTITION BY:

SELECT SUM(Artikel.Prijs * OpdrachtArtikel.aantal) over (partition by opdrachtnr) as materiaalkosten, OpdrachtArtikel.opdrachtnr, Artikel.artikelnr,
Artikel.omschrijving, Artikel.Prijs, Auto.kenteken, Klant.voorletters, Klant.tussenvoegsel, Klant.achternaam

From Auto JOIN Klant on Klant.klantnr =Auto.klantnr
JOIN Opdracht on Opdracht.kenteken = Auto.kenteken
JOIN OpdrachtArtikel on OpdrachtArtikel.opdrachtnr = Opdracht.opdrachtnr
JOIN Artikel on Artikel.artikelnr = Artikel.artikelnr

Go to Top of Page

bnf1
Starting Member

7 Posts

Posted - 2011-12-09 : 07:56:13
quote:
Originally posted by lappin

materiaalkosten is an alias. If you want to refer to it you can include your query as a subquery i.e.

Select SUM(materiaalkosten), OpdrachtArtikel.opdrachtnr

from (
SELECT Artikel.Prijs * OpdrachtArtikel.aantal as materiaalkosten, OpdrachtArtikel.opdrachtnr, Artikel.artikelnr,
Artikel.omschrijving, Artikel.Prijs, Auto.kenteken, Klant.voorletters, Klant.tussenvoegsel, Klant.achternaam

From Auto JOIN Klant on Klant.klantnr =Auto.klantnr
JOIN Opdracht on Opdracht.kenteken = Auto.kenteken
JOIN OpdrachtArtikel on OpdrachtArtikel.opdrachtnr = Opdracht.opdrachtnr
JOIN Artikel on Artikel.artikelnr = Artikel.artikelnr
)
) sub
GROUP BY OpdrachtArtikel.opdrachtnr





Lappin, thnx for your quick response.

I used the subquery as above (i replaced the ..... by OpdrachtArtikel.opdrachtnr)


sadly this is the response:



Msg 156, Level 15, State 1, Line 9
Incorrect syntax near the keyword 'from'.
Msg 102, Level 15, State 1, Line 18
Incorrect syntax near ')'.


please help me further

Thnx,

Frank
Go to Top of Page

visakh16
Very Important crosS Applying yaK Herder

52326 Posts

Posted - 2011-12-09 : 08:37:27
you've an unnecessary braces


Select SUM(materiaalkosten), OpdrachtArtikel.opdrachtnr

from (
SELECT Artikel.Prijs * OpdrachtArtikel.aantal as materiaalkosten, OpdrachtArtikel.opdrachtnr, Artikel.artikelnr,
Artikel.omschrijving, Artikel.Prijs, Auto.kenteken, Klant.voorletters, Klant.tussenvoegsel, Klant.achternaam

From Auto JOIN Klant on Klant.klantnr =Auto.klantnr
JOIN Opdracht on Opdracht.kenteken = Auto.kenteken
JOIN OpdrachtArtikel on OpdrachtArtikel.opdrachtnr = Opdracht.opdrachtnr
JOIN Artikel on Artikel.artikelnr = Artikel.artikelnr
)
) sub
GROUP BY OpdrachtArtikel.opdrachtnr


------------------------------------------------------------------------------------------------------
SQL Server MVP
http://visakhm.blogspot.com/

Go to Top of Page

madhivanan
Premature Yak Congratulator

22864 Posts

Posted - 2011-12-09 : 08:37:27
Try this

Select SUM(materiaalkosten), OpdrachtArtikel.opdrachtnr

from (
SELECT Artikel.Prijs * OpdrachtArtikel.aantal as materiaalkosten, OpdrachtArtikel.opdrachtnr, Artikel.artikelnr,
Artikel.omschrijving, Artikel.Prijs, Auto.kenteken, Klant.voorletters, Klant.tussenvoegsel, Klant.achternaam

From Auto JOIN Klant on Klant.klantnr =Auto.klantnr
JOIN Opdracht on Opdracht.kenteken = Auto.kenteken
JOIN OpdrachtArtikel on OpdrachtArtikel.opdrachtnr = Opdracht.opdrachtnr
JOIN Artikel on Artikel.artikelnr = Artikel.artikelnr
) sub
GROUP BY OpdrachtArtikel.opdrachtnr

Madhivanan

Failing to plan is Planning to fail
Go to Top of Page

madhivanan
Premature Yak Congratulator

22864 Posts

Posted - 2011-12-09 : 08:41:58
and tied

Madhivanan

Failing to plan is Planning to fail
Go to Top of Page

bnf1
Starting Member

7 Posts

Posted - 2011-12-09 : 09:05:26
quote:
Originally posted by madhivanan

and tied

Madhivanan

Failing to plan is Planning to fail




visakh16, madhivanan,

Youre corrections helpt me, but now the response is:

Msg 4104, Level 16, State 1, Line 13
The multi-part identifier "OpdrachtArtikel.opdrachtnr" could not be bound.
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "OpdrachtArtikel.opdrachtnr" could not be bound.

Line 1 and Line 13 are both outsite of the SUB, is that why i get the error?



Thnx,

Frank
Go to Top of Page

madhivanan
Premature Yak Congratulator

22864 Posts

Posted - 2011-12-09 : 09:28:56
Try this

Select SUM(materiaalkosten), opdrachtnr

from (
SELECT Artikel.Prijs * OpdrachtArtikel.aantal as materiaalkosten, OpdrachtArtikel.opdrachtnr, Artikel.artikelnr,
Artikel.omschrijving, Artikel.Prijs, Auto.kenteken, Klant.voorletters, Klant.tussenvoegsel, Klant.achternaam

From Auto JOIN Klant on Klant.klantnr =Auto.klantnr
JOIN Opdracht on Opdracht.kenteken = Auto.kenteken
JOIN OpdrachtArtikel on OpdrachtArtikel.opdrachtnr = Opdracht.opdrachtnr
JOIN Artikel on Artikel.artikelnr = Artikel.artikelnr
) sub
GROUP BY opdrachtnr


Madhivanan

Failing to plan is Planning to fail
Go to Top of Page

bnf1
Starting Member

7 Posts

Posted - 2011-12-09 : 09:36:27
quote:
Originally posted by madhivanan

Try this

Select SUM(materiaalkosten), opdrachtnr

from (
SELECT Artikel.Prijs * OpdrachtArtikel.aantal as materiaalkosten, OpdrachtArtikel.opdrachtnr, Artikel.artikelnr,
Artikel.omschrijving, Artikel.Prijs, Auto.kenteken, Klant.voorletters, Klant.tussenvoegsel, Klant.achternaam

From Auto JOIN Klant on Klant.klantnr =Auto.klantnr
JOIN Opdracht on Opdracht.kenteken = Auto.kenteken
JOIN OpdrachtArtikel on OpdrachtArtikel.opdrachtnr = Opdracht.opdrachtnr
JOIN Artikel on Artikel.artikelnr = Artikel.artikelnr
) sub
GROUP BY opdrachtnr


Madhivanan

Failing to plan is Planning to fail




Madhivanan,

Great, no more error

totaal_materiaalkosten opdrachtnr
4055565.50 1
579366.50 2
2317466.00 3

i just have to figure out why totaal_materiaalkosten is such a big nummer

Thnx,

Frank
Go to Top of Page

bnf1
Starting Member

7 Posts

Posted - 2011-12-09 : 09:41:15
quote:
Originally posted by bnf1

quote:
Originally posted by madhivanan

Try this

Select SUM(materiaalkosten), opdrachtnr

from (
SELECT Artikel.Prijs * OpdrachtArtikel.aantal as materiaalkosten, OpdrachtArtikel.opdrachtnr, Artikel.artikelnr,
Artikel.omschrijving, Artikel.Prijs, Auto.kenteken, Klant.voorletters, Klant.tussenvoegsel, Klant.achternaam

From Auto JOIN Klant on Klant.klantnr =Auto.klantnr
JOIN Opdracht on Opdracht.kenteken = Auto.kenteken
JOIN OpdrachtArtikel on OpdrachtArtikel.opdrachtnr = Opdracht.opdrachtnr
JOIN Artikel on Artikel.artikelnr = Artikel.artikelnr
) sub
GROUP BY opdrachtnr


Madhivanan

Failing to plan is Planning to fail




Madhivanan,

Great, no more error

totaal_materiaalkosten opdrachtnr
4055565.50 1
579366.50 2
2317466.00 3

i just have to figure out why totaal_materiaalkosten is such a big nummer

Thnx,

Frank



Found it!!!

in my table i had a Artikel.Prijs with a much to high value


Everyone THNX a lot

Thnx,

Frank
Go to Top of Page
   

- Advertisement -