1
Reply

Differentiate UNPIVOT and CROSSAPPLY in SQL

    UNPIVOT -
    Use of Unpivot isto convert column into rows. which is basica reversal of Pivot function. It’s used to normalize the denormalized data structure.

    Eg. -

    1. CREATE TABLE SalesData (
    2. ProductID INT,
    3. Q1 INT,
    4. Q2 INT,
    5. Q3 INT,
    6. Q4 INT
    7. );
    8. INSERT INTO SalesData VALUES (1, 100, 200, 150, 300);
    ProductID Q1 Q2 Q3 Q4
    1 100 200 150 300

    Applying Unpivot

    1. SELECT ProductID, Quarter, Sales
    2. FROM SalesData
    3. UNPIVOT (Sales FOR Quarter IN (Q1, Q2, Q3, Q4)) AS Unpvt;

    Output Becomes

    ProductID Quarter Sales
    1 Q1 100
    1 Q2 200
    1 Q3 150
    1 Q4 300

    CROSS APPLY -
    Joins a table function with each row of the outer query, acting like a correlated subquery. It Used for splitting, filtering, or applying table-valued functions on row-by-row basis.

    Eg. -

    1. CREATE TABLE EmployeeProjects (
    2. EmployeeID INT,
    3. Projects VARCHAR(100)
    4. );
    5. INSERT INTO EmployeeProjects VALUES (1, 'ProjectA,ProjectB,ProjectC');
    EmployeeID Projects
    1 ProjectA,ProjectB,ProjectC

    Applying CROSSAPPLY

    1. SELECT e.EmployeeID, p.Value AS ProjectName
    2. FROM EmployeeProjects e
    3. CROSS APPLY STRING_SPLIT(e.Projects, ',') p;

    Output -

    EmployeeID ProjectName
    1 ProjectA
    1 ProjectB
    1 ProjectC