If i understand you well, try this:
INSERT INTO (Id, Dates.date_type, Dates.date_displayed)
SELECT (
SELECT Id, 'Start_date' AS date_Type, Start_date AS date_displayed
FROM T_Dates
UNION ALL
SELECT Id, 'End_date' AS date_Type, End_date AS date_displayed
FROM T_Dates
UNION ALL
SELECT Id, 'Set_date' AS date_Type, Set_date AS date_displayed
FROM T_Dates
) AS T
Another way is to use
UNPIVOT[
^] operator.
Have a look at example:
SET DATEFORMAT mdy;
CREATE TABLE #T_Dates (ID INT IDENTITY(1,1), [Start_date] DATETIME, [End_date] DATETIME, [Set_date] DATETIME, [Another_date] DATETIME)
INSERT INTO #T_Dates ([Start_date], [End_date], [Set_date], [Another_date] )
VALUES('10/1/2014', '10/6/2014', '10/2/2014', '10/8/2014'),
('10/7/2014','10/4/2014','10/3/2014', '10/6/2014'),('10/17/2014','10/14/2014','10/13/2014', '10/9/2014')
CREATE TABLE #Dates(ID INT IDENTITY(1,1), Old_ID INT, Date_Type VARCHAR(30), Date_Displayed DATETIME)
INSERT INTO #Dates (Old_ID, [Date_Type], [Date_Displayed])
SELECT ID AS Old_ID, [Date_Type], [Date_Displayed]
FROM (
SELECT *
FROM #T_Dates
) AS pvt
UNPIVOT( [Date_Displayed] FOR [Date_Type] IN([Start_date], [End_date], [Set_date], [Another_date])) as unpvt
SELECT *
FROM #Dates
DROP TABLE #T_Dates
DROP TABLE #Dates
Result:
ID Old_ID Date_Type Date_Displayed
1 1 Start_date 2014-10-01 00:00:00.000
2 1 End_date 2014-10-06 00:00:00.000
3 1 Set_date 2014-10-02 00:00:00.000
4 1 Another_date 2014-10-08 00:00:00.000
5 2 Start_date 2014-10-07 00:00:00.000
6 2 End_date 2014-10-04 00:00:00.000
7 2 Set_date 2014-10-03 00:00:00.000
8 2 Another_date 2014-10-06 00:00:00.000
9 3 Start_date 2014-10-17 00:00:00.000
10 3 End_date 2014-10-14 00:00:00.000
11 3 Set_date 2014-10-13 00:00:00.000
12 3 Another_date 2014-10-09 00:00:00.000