Udtræk giver NULL - vil alligevel have en record skrevet ud
Hej, jeg har et udtræk til noget statistik hvor jeg skal vide hvor mange af en række ansøgere der har sagt "ja tak", "nej tak" eller "ude i tilbud".
Dette gør jeg nogenlunde på denne måde:
select case when wpo3.name_da is null then 'Ude i tilbud' else wpo3.name_da END as 'Stat_del', cast(count(1) as nvarchar) as 'Antal', cast(datepart(week, getdate()) as nvarchar) as 'Ugenr'
from wait_applicant wa (nolock)
inner join wac (...)
inner join wapd (...)
left join wapd2 (...)
/* prioriteringstilbud */ left join wait_applicantparameterdata wapd3 (nolock) on (wapd3.fk_customparamdef = '3D7DF84D-55B3-4F5D-B471-1DD9C3CD433F' and wa.id = wapd3.fk_applicant) left join WAIT_parameteroptions wpo3 (nolock) on (wapd3.fk_optionparameter = wpo3.id)
where wa.deletedate is null and wpo.name_da='Ja' and wpo2.name_da = 'Godkendt' group by wpo3.name_da
---------------------- Det er i wpo3.name_da at de forskellige svartyper ligger, altså "ja tak", "nej tak" og hvis det giver NULL betyder det at "ude i tilbud"
Jeg får et recordsæt ud der ligner følgende:
Stat_del | Antal | Ugenr. | -------------------------------- Ude i tilbud | 8 | 30 | Ja tak | 1 | 30 | --------------------------------
Mit problem er at selvom der ikke er nogen som har valgt "nej tak" kategorien endnu - så vil jeg gerne have at der kom en record med "nej tak" og et antal på 0.
Men jeg har åbenbart fået for meget varme, for jeg kan ikke lige hitte en løsning. Jeg håber at der er andre der kan.
Jeg tror faktisk mere at det er din group by der ikke kan lide din null kolonne. Distinct udelader null, og det tror jeg også at group by gør. Jeg tror at du skal bruge group by "din case"
Nu forstår jeg ikke lige du har lavet din select sådan, men det kan vi altid kigge nærmere på hvis du har behov for det. Anyway.. Måden at få eks.vis uger med ud på eller andet som altid skal være læsbart er at bruge en basistabel. Lav en tabel med samtlige ugenumre i og join op imod den vha. en right join, på den måde får du alle uger med som du vil kigge på - du kan evt. begrænse ugerne i din where-clause. Nu får du jo nok en null-value eller flere med ud, brug isnull(...., 0) til dette.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.