Hi,
You can create a static or dynamic pivot query to transform the data.
Here's an example of the static pivot query:
DECLARE @DataTable TABLE (Ent_ID INT, Dest_ID INT, Bank_ID INT, Post_ID INT);
INSERT INTO @DataTable (Ent_ID, Dest_ID, Bank_ID, Post_ID)
VALUES (12, 800, 1, 2),
(13, 900, 1, 2),
(14, 800, 1, 9),
(15, 900, 1, 10);
SELECT Bank_ID, Post_ID, [800] AS Dest_ID_800, [900] AS Dest_ID_900
FROM
(SELECT Dest_ID, Bank_ID, Post_ID
FROM @DataTable) AS SourceTable
PIVOT (MAX(Dest_ID) FOR Dest_ID IN
([800], [900])
) AS PivotTable;
Result:
Bank_ID Post_ID Dest_ID_800 Dest_ID_900
1 2 800 900
1 9 800 NULL
1 10 NULL 900
A static query is good if the number of columns (
Dest_ID_800
,
Dest_ID_900
, etc.) is fixed. If you want dynamic number of columns (based on the data in
Dest_ID
column), you can write a dynamic pivot query, i.e. you need to rewrite the static query to be dynamically written.
If you want to write a dynamic pivot query, please take a look here:
1.
Dynamic PIVOT in Sql Server[
^]
2.
An example of a dynamic pivot query[
^]