mercredi 5 août 2015

Break ranges into a row from two columns

I have a table as follows

CREATE TABLE [dbo].[CODE](
    [BEG] [varchar](10) NOT NULL,
    [END] [varchar](10) NOT NULL,
    [EFF_BEG] [smalldatetime] NOT NULL
) ON [PRIMARY]

Insert into CODE select 'H0411', 'H0413', '01/01/2015'
Insert into CODE select 'J090', 'J093', '01/01/2015'

I want to get the list of all codes within the BEG and END like below

Instance

H0411

H0412

H0413

J090

J091

J092

J093

i have something like below but it wont work on varchar column

WITH number_cte (n)
AS (
    SELECT n
    FROM (
        SELECT 0 n
        ) m

    UNION ALL

    SELECT n + 1 n
    FROM number_cte
    WHERE n < 2400
    )
SELECT BEG+n instance
    ,EFF_BEG
FROM CODE
JOIN number_cte ON BEG + n BETWEEN BEG
        AND END
WHERE BEG + n - 100 * floor((BEG + n) / 100) BETWEEN 0
        AND 59
ORDER BY 1
OPTION (MAXRECURSION 2401)

Any solution to this? Thanks

Aucun commentaire:

Enregistrer un commentaire