SELECT DISTINCT conc.id,conc.numerorichiestacontratto,lc.decorrenzacontratto,tc.descrizione AS descrizionedurata,lc.datascadenza ,(CASE WHEN sc.revocato = 'true' THEN 'NO' ELSE 'SI' END) AS concessioneattiva ,CONCAT(c.descrizione,' ',s.descrizione,' ',b.descrizione,' fila ', l.fila,' n.',l.alias) AS posti ,tcs.descrizione AS tipicostruzione ,STUFF((SELECT CONCAT(' ',defunto.cognome,' ',defunto.nome,',') FROM concessione INNER JOIN defuntoconcessione ON defuntoconcessione.idconcessione = concessione.id INNER JOIN defunto ON defunto.id = defuntoconcessione.iddefunto WHERE concessione.id = conc.id FOR XML PATH('')),1,1,'') AS defunti ,STUFF((SELECT CONCAT(' ',richiedente.cognome,' ',richiedente.nome,',') FROM concessione INNER JOIN concessionerichiedente ON concessionerichiedente.idconcessione = concessione.id INNER JOIN richiedente ON richiedente.id = concessionerichiedente.idrichiedente WHERE concessione.id = conc.id AND concessionerichiedente.cessato = '0' FOR XML PATH('')),1,1,'') AS concessionari FROM loculo l inner join tipocostruzione tcs on tcs.id = l.tipotomba inner join blocco b on b.id = l.idblocco inner join settore s on s.id = b.idsettore inner join cimitero c on c.id = s.idcimitero inner join loculoconcessione lc on lc.idloculo = l.id inner join concessione conc on conc.id = lc.idconcessione INNER JOIN tipoconcessione tc ON tc.id = conc.tipocontratto INNER JOIN statoconcessione sc ON sc.id = lc.idstatoconcessione WHERE conc.id > 0 AND conc.id NOT IN (SELECT idpadre FROM concessione) AND conc.id IN (SELECT idconcessione FROM loculoconcessione INNER JOIN statoconcessione ON statoconcessione.id = loculoconcessione.idstatoconcessione WHERE statoconcessione.revocato = '0') AND (CASE WHEN [[cimitero_id]] <> 0 and conc.id IN (SELECT concessione.id FROM concessione INNER JOIN loculoconcessione ON loculoconcessione.idconcessione = concessione.id INNER JOIN loculo ON loculo.id = loculoconcessione.idloculo INNER JOIN blocco ON blocco.id = loculo.idblocco INNER JOIN settore ON settore.id = blocco.idsettore INNER JOIN cimitero ON cimitero.id = settore.idcimitero WHERE cimitero.id = [[cimitero_id:default:dbint]] ) then 1 WHEN [[cimitero_id]] = 0 then 1 ELSE 0 END = 1) AND lc.datascadenza >= [[datascadenzadal:default:dbdate]] AND lc.datascadenza < CASE WHEN '[[datascadenzaal]]' <> 'EMPTY' THEN DATEADD(D,1,[[datascadenzaal:default:dbdate]]) ELSE '2099-12-31' END AND (CASE WHEN '[[datascadenzaal]]' <> 'EMPTY' AND conc.id NOT IN (SELECT idconcessione FROM loculoconcessione WHERE idloculo IN (SELECT idloculo FROM loculoconcessione WHERE datascadenza > (DATEADD(D,1,[[datascadenzaal:default:dbdate]])))) THEN 1 WHEN '[[datascadenzaal]]' = 'EMPTY' THEN 1 ELSE 0 END = 1) AND (CASE WHEN [[tipocostruzione_id]] <> 0 AND conc.id IN (SELECT concessione.id FROM concessione INNER JOIN loculoconcessione ON loculoconcessione.idconcessione = concessione.id INNER JOIN loculo ON loculo.id = loculoconcessione.idloculo INNER JOIN tipocostruzione ON tipocostruzione.id = loculo.tipotomba WHERE tipocostruzione.id = [[tipocostruzione_id:dbint:default]] ) THEN 1 WHEN [[tipocostruzione_id]] = 0 THEN 1 ELSE 0 END = 1) ORDER BY conc.numerorichiestacontratto, conc.id