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)
Sådan lød beskeden fra en IT-specialist til karriererådgiver og headhunter Jens Peter Holm, som han havde i proces til et spændende job.
11. april 2024
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.