CatZMedlem sedan jan. 20022 440 inlägg Jag har en SP som jag inte lyckas få till som jag vill.
SELECT
tblInvoice.InvoiceID,
tblInvoice.InvoiceNumber,
tblCustomers.Name AS Customer,
tblInvoice.EndDate,
dbo.LineTotal(tblInvoice.Km, tblInvoice.KmPrice, 0, tblInvoice.GST, 1) AS KMTotal,
SUM(dbo.LineTotal(tblProducts.Quantity, tblProducts.UnitPrice, 0, tblInvoice.GST, 1)) AS ProductTotal,
SUM(dbo.LineTotal(tblInvoiceDetails.Quantity, tblInvoice.HourPrice, 0, tblInvoice.GST, 1)) AS HourTotal
FROM
tblInvoice
LEFT OUTER JOIN tblProducts ON tblInvoice.InvoiceID = tblProducts.InvoiceID
LEFT OUTER JOIN tblInvoiceDetails ON tblInvoice.InvoiceID = tblInvoiceDetails.InvoiceID
INNER JOIN tblCustomers ON tblInvoice.CustomerID = tblCustomers.CustomerID
GROUP BY
tblInvoice.InvoiceID,
tblInvoice.InvoiceNumber,
tblCustomers.Name,
tblInvoice.EndDate,
dbo.LineTotal(tblInvoice.Km, tblInvoice.KmPrice, 0, tblInvoice.GST, 1)
ORDER BY
tblInvoice.InvoiceNumber DESC
Det går bra så länge jag bara har en rad i vardera av timmar och produkter så fort jag har två rader som knyts till en faktura så skrivs allting ut dubbelt. Vad gör jag för fel?
Om du kollar på bilderna kanske du förstår bättre vad jag försöker säga men inte hittar ord till ;)
LarsGMedlem sedan dec. 200012 464 inlägg Tillbaka till basen.
Ge exempel på datainnehåll och förväntat resultat.
CatZMedlem sedan jan. 20022 440 inlägg Detta får jag:
243 6 NULL NULL NULL
242 5 NULL NULL NULL
241 4 312,50 1000,00 1875,00
240 3 62,50 1,25 312,50
237 1 31,25 NULL NULL
BoOch såhär vill jag att det ska bli:
243 6 NULL NULL NULL
242 5 NULL NULL NULL
241 4 312,50 500,00 625,00
240 3 62,50 1,25 312,50
237 1 31,25 NULL NULL
Så fort jag har mer en två rader i svaret som jag försöker slå ihop så blir det dubbelt har jag 3 rader som jag har på invoiceid 241 där finns det 3 rader, en med 200 en med 100 och ytterligare en med 100. då blir det 1875 istället för 625. Så länge jag bara har en rad i respektive tabell så går det bra.
Några idéer?
LarsGMedlem sedan dec. 200012 464 inlägg Du får räkna ut de båda summorna var för sig och inte joina ihop allt.
CatZMedlem sedan jan. 20022 440 inlägg red.
Du menar att jag ska göra 3 olika SP av det hela och köra innifrån huvudfrågan något i stil med
declare @InvoiceID as int
declare @HourTotal as money
@InvoiceID = (select InvoiceID from tblInvoice)
execute spGetHourTotals @InvoiceID, @HourTotal output
Var det så du tänkte eller kan man göra på något bättre sätt?
CatZMedlem sedan jan. 20022 440 inlägg SELECT
tblInvoice.InvoiceID,
myHourTotal.HourTotal
FROM
tblInvoice
LEFT OUTER JOIN
(
SELECT
tblInvoice.InvoiceID,
SUM(dbo.LineTotal(tblInvoiceDetails.Quantity, tblInvoice.HourPrice, 0, tblInvoice.GST, 1)) AS HourTotal
FROM
tblInvoice
LEFT OUTER JOIN tblInvoiceDetails ON tblInvoice.InvoiceID = tblInvoiceDetails.InvoiceID
WHERE
(tblInvoiceDetails.InvoiceID = tblInvoice.InvoiceID)
GROUP BY
tblInvoice.InvoiceID
) AS myHourTotal
ON tblInvoice.InvoiceID = myHourTotal.InvoiceID
GROUP BY
tblInvoice.InvoiceID,
myHourTotal.HourTotal
ORDER BY
tblInvoice.InvoiceID DESC
Jag kom på vad du menade LarsG, tack för sparken i rätt rumpa höll jag på att skriva men riktning menar jag! ;)