quesito interessante, ne farò un articolo
1. registrati una funzione come questa (cfr: http://www.sqlservercentral.com/arti...ulation/61822/)
codice:
CREATE FUNCTION dbo.GetNumbers
(
@Start BIGINT,
@End BIGINT
)
RETURNS @ret TABLE(Number BIGINT)
AS
BEGIN
WITH
L0 AS (SELECT 1 AS C UNION ALL SELECT 1), --2 rows
L1 AS (SELECT 1 AS C FROM L0 AS A, L0 AS B),--4 rows
L2 AS (SELECT 1 AS C FROM L1 AS A, L1 AS B),--16 rows
L3 AS (SELECT 1 AS C FROM L2 AS A, L2 AS B),--256 rows
L4 AS (SELECT 1 AS C FROM L3 AS A, L3 AS B),--65536 rows
L5 AS (SELECT 1 AS C FROM L4 AS A, L4 AS B),--4294967296 rows
num AS (SELECT ROW_NUMBER() OVER(ORDER BY C) AS N FROM L5)
INSERT INTO @ret(Number)
SELECT N FROM NUM WHERE N BETWEEN @Start AND @End
RETURN
END
poi usala così (questa è roba mia
)
codice:
SELECT DataReg, COUNT (*) FROM (
SELECT
dataIn + Number-1 AS DataReg
FROM
iscrizioni CROSS APPLY dbo.GetNumbers(1, datediff(day,iscrizioni.datain,iscrizioni.dataout)+1)
) tbl GROUP BY DataReg
ovviamente questa è generica, puoi aggiungere parametri di ricerca, oppure usarla per creare una tabella di statistiche