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