• Try to use dynamic pivot, this may help you,

    DROP TABLE #t1

    CREATE TABLE #t1

    (

    EmpID INT,

    [Height] NVARCHAR(100),

    [Weight] NVARCHAR(100),

    [Attitude] NVARCHAR(100),

    [Build] NVARCHAR(100),

    [DateID] INT

    )

    INSERT INTO #t1

    VALUES(1, '5.2', '65', 'Cool', 'Good', 1),(1, '5.2', '55', 'Cool', 'Average', 2),(1, '5.2', '55', 'Cool', 'Average', 3)

    DECLARE @SQL NVARCHAR(MAX),@MinID INT,@MaxID INT,@DateID NVARCHAR(100)

    SELECT @MinID = 2,@MaxID = MAX([DateID])

    FROM #t1

    SELECT @SQL = '(select * from #t1 E where [DateID] = 1 )E UNPIVOT ([1] FOR OrderName IN (Height, Weight, Attitude, Build))E1'

    WHILE(@MinID<=@MaxID)

    BEGIN

    SELECT @SQL = @SQL +' INNER JOIN '

    +'(select * from #t1 E where [DateID] = '+CAST(@MinID AS NVARCHAR(100))+' )E

    UNPIVOT (['+CAST(@MinID AS NVARCHAR(100))+'] FOR OrderName IN (Height, Weight, Attitude, Build))E'+CAST(@MinID AS NVARCHAR(100))+

    +' ON E1.EmpID = E'+CAST(@MinID AS NVARCHAR(100))+'.EmpID AND E1.OrderName = E'+CAST(@MinID AS NVARCHAR(100))+'.OrderName'

    SELECT @MinID = @MinID + 1

    END

    SELECT @SQL = 'SELECT * FROM '+@SQL

    EXEC(@SQL)

    Regards,
    Mitesh OSwal
    +918698619998