• tsk tsk.

    I had some time after work to help ya out. Honestly the best way to go is dynamic sql. I gave you an explaination about piviot so you should be good on how to use it. Dyanmic sql is a beast of its own though, hope you're able to swap out the tables without to much trouble

    CREATE TABLE #TEMP

    (

    SUB_DISTRICT varchar(100) ,

    LOCATION_TYPE varchar(100),

    Date_type date

    )

    INSERT INTO #TEMP

    VALUES('Paris', 'Inland', '2012/1/1'),

    ('Nigeria', 'Inland', '2012/1/2'),

    ('Brasil', 'Coast', '2012/6/3'),

    ('Paris', 'Inland', '2012/2/2'),

    ('Nigeria', 'Inland', '2012/5/5'),

    ('Brasil', 'Coast', '2012/6/3'),

    ('Texas', 'Inland', '2012/12/12'),

    ('Paris', 'Inland', '2012/11/11'),

    ('Nigeria', 'Mountain', '2012/8/8'),

    ('Nigeria', 'Mountain', '2012/10/10'),

    ('Texas', 'Inland', '2012/10/12'),

    ('Texas', 'Inland', '2012/9/12'),

    ('Texas', 'Inland', '2012/1/1')

    DECLARE @cols10 VARCHAR(2000)

    SELECT @cols10 = COALESCE(@cols10 + ',[' + 'Q' + DATE_TYPE + ']','[' + 'Q' + DATE_TYPE + ']')

    FROM (

    SELECT DISTINCT CONVERT(VARCHAR(10),(DATEPART(Quarter,DATE_TYPE))) DATE_TYPE

    FROM #TEMP

    GROUP BY DATE_TYPE)LA

    DECLARE @SQL10 VARCHAR(4000)

    SET @SQL10 = '

    SELECT SUB_DISTRICT,

    LOCATION_TYPE,

    '+ @cols10 +'

    FROM (SELECT

    SUB_DISTRICT,

    LOCATION_TYPE,

    ''Q''+ CONVERT(VARCHAR(10),(DATEPART(Quarter,DATE_TYPE)))DATE_TYPE

    FROM #TEMP) AS A

    PIVOT (COUNT(DATE_type) FOR DATE_type IN ('+ @cols10 +') )P'

    exec (@SQL10)

    print @SQL10