01. september 2014 - 12:17Der er
10 kommentarer og 1 løsning
Modificering af SQL
Jeg har følgende simple forespørgsel:
SELECT site_id AS Lokalitetsnr, init AS Sagsbehandler, site_events.event_type_id AS Historikkode, event_types.event_type_name AS Sagsforløb, CONVERT(VARCHAR(10),site_events.start_date, 105) AS StartDato, CONVERT(VARCHAR(10),site_events.end_date, 105) AS SlutDato
FROM Site JOIN site_events ON Site.site_seq_no = site_events.site_seq_no JOIN event_types ON site_events.event_type_id = event_types.event_type_id
WHERE site_events.event_type_id IN ('50.021','21.005') AND (YEAR(site_events.start_date) >= 2012 OR YEAR(site_events.end_date) >= 2014)
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Slettet bruger
01. september 2014 - 14:36#1
Kunne være noget ligende dette:
select Lokalitetsnr ,SubString(Sagsbehandler,1,4) Sagsbehandler ,min(StartDato) Start, max(SlutDato) Slut from ( .... dit select ... ) s1 group by s1.Lokalitetsnr, SubString(Sagsbehandler,1,4)
Startdato skal kun være for event_type_id = '50.021' og slutdato kun for event_type_id = '21.005'.
Resultatet skal altså groft sagt vises i skema i stedet for i tabelvisning.
Synes godt om
Slettet bruger
02. september 2014 - 15:48#4
SubString var for at få sagsbehandler.
select Lokalitetsnr ,min(case when Historikkode = '50.021' then StartDato end) Start ,max(case when Historikkode = '21.00' then SlutDato end) Slut from ( .... dit select ... ) s1 group by s1.Lokalitetsnr
Jeg er nået frem til følgende, men det virker ikke helt:
SELECT Lokalitetsnr, SUBSTRING(Sagsbehandler,1,4) AS Sagsbehandler, MIN(CASE WHEN Historikkode = '50.021' THEN StartDato END) AS "Anmodning (50.021) start dato", MAX(CASE WHEN Historikkode = '21.005' THEN SlutDato END) AS "Udarbejdelse af afgørelse (21.005) sendt den"
FROM (SELECT site_id AS Lokalitetsnr, init AS Sagsbehandler, CONVERT(VARCHAR(10),site_events.start_date, 105) AS StartDato, CONVERT(VARCHAR(10),site_events.end_date, 105) AS SlutDato,
FROM Site JOIN site_events ON Site.site_seq_no = site_events.site_seq_no JOIN event_types ON site_events.event_type_id = event_types.event_type_id
WHERE site_events.event_type_id IN ('50.021','21.005') AND (YEAR(site_events.start_date) >= 2012 OR YEAR(site_events.end_date) >= 2014) AS s1
GROUP BY s1.Lokalitetsnr, Sagsbehandler
Synes godt om
Slettet bruger
02. september 2014 - 23:37#6
Jeg tror du skal have substring med i group by - altså: Lokalitetsnr, SUBSTRING(Sagsbehandler,1,4)
Nu tror jeg næsten den er ved at være der. Jeg kan bare ikke få datoer [Udarbejdelse af afgørelse (21.005) sendt den]. Alle værdierne er null. Der skal vises en dato inden for Lokalitetsnr, hvis der er en dato i [Anmodning (50.021) start dato].
SELECT Lokalitetsnr, MIN(CASE WHEN Historikkode = '50.021' THEN StartDato END) AS [Anmodning (50.021) start dato], MAX(CASE WHEN Historikkode = '21.005' THEN SlutDato END) AS [Udarbejdelse af afgørelse (21.005) sendt den]
FROM ( SELECT site_id AS Lokalitetsnr, CONVERT(VARCHAR(10),site_events.start_date, 105) AS StartDato, CONVERT(VARCHAR(10),site_events.end_date, 105) AS SlutDato, site_events.event_type_id AS Historikkode FROM Site JOIN site_events ON Site.site_seq_no = site_events.site_seq_no WHERE site_events.event_type_id IN ('50.021','21.005') AND (YEAR(site_events.start_date) >= 2012 OR YEAR(site_events.end_date) >= 2014) ) AS s1
WHERE (CASE WHEN Historikkode = '50.021' THEN StartDato END) IS NOT NULL
GROUP BY Lokalitetsnr
Synes godt om
Slettet bruger
04. september 2014 - 10:28#8
WHERE (CASE WHEN Historikkode = '50.021' THEN StartDato END) IS NOT NULL - dur ikke
Den her virker sådan set fint, men kan jeg undgå at få de poster hvor MIN(CASE WHEN Historikkode = '50.021' THEN StartDato END) AS [Anmodning (50.021) start dato] er NULL med i udtrækket?
SELECT Lokalitetsnr, MIN(CASE WHEN Historikkode = '50.021' THEN StartDato END) AS [Anmodning (50.021) start dato], MAX(CASE WHEN Historikkode = '21.005' THEN SlutDato END) AS [Udarbejdelse af afgørelse (21.005) sendt den]
FROM ( SELECT site_id AS Lokalitetsnr, CONVERT(VARCHAR(10),site_events.start_date, 105) AS StartDato, CONVERT(VARCHAR(10),site_events.end_date, 105) AS SlutDato, site_events.event_type_id AS Historikkode FROM Site JOIN site_events ON Site.site_seq_no = site_events.site_seq_no WHERE site_events.event_type_id IN ('50.021','21.005') AND (YEAR(site_events.start_date) >= 2012 OR YEAR(site_events.end_date) >= 2014) ) AS s1
GROUP BY Lokalitetsnr
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.