Vill få ut en lista i en datagrid och har skrivit en lagrad procedur som inte vill fungera som jag vill. Har ett villkor på Fakturerad om den är 0 skall den summeras och visas i listan. Koden ser ut som nedan och resultatet skall vara
Kundnr Namn Modul Antal ej fakturerade
1 Test 1 Modul1 12
1 Test 1 Modul2 5
2 Test 2 Modul1 -
2 Test 2 Modul2 5
SELECT S.KundNr AS Kundnr, S.Namn AS Namn, sModul as Modul, if L.Fakturerad = '0' THEN COUNT(L.Fakturerad) ELSE '-' AS Antal END IF
FROM System S INNER JOIN
Logg L ON S.KundNr = L.KundNr
WHERE L.DemoKund = '0' AND sModul = @Modul AND S.TestFtg is null OR s.TestFtg = '0'
GROUP BY S.KundNr, S.Namn, sModul
ORDER BY S.KundNr
Jag skulle använda CASE istället för IF. Dock finns ett problem; en summa av någonting är ett tal, dvs inte samma datatyp som '-'. Så antingen får du typkonvertera i frågan, eller välja null istället, och hantera det i applikationen.
red: Bytte heltal mot tal, eftersom det faktiskt kan vara decimaler i en summa. ;-)