Comment séparer datatables dans différentes colonnes sql?

Colonne

+--------------------------+ | inv_num scn | +--------------------------+ | MI1001 160008 | | CI1002 160008 | | VI1003 160008 | +--------------------------+ 

MI est pour Misc, CI est pour Cargo, VI est pour Vessel.

J'ai besoin du résultat sql pour montrer comme

 +------------------------------------------------+ | scn Misc Cargo Vessel | +------------------------------------------------+ | 160008 MI1001 CI1002 VI1003 | +------------------------------------------------+ 

Je suis nouveau à ce genre de chose donc je ne sais pas comment faire la requête.

Je le ferais avec une agrégation conditionnelle:

 select scn, max(case when inv_num like 'MI%' then inv_num end) as Misc, max(case when inv_num like 'CI%' then inv_num end) as Cargo, max(case when inv_num like 'VI%' then inv_num end) as Vessel from t group by scn; 

en utilisant Pivot aussi nous pouvons atteindre

Exemple de données

 Declare @Table1 TABLE (inv_num varchar(6), scn int) ; INSERT INTO @Table1 (inv_num, scn) VALUES ('MI1001', 160008), ('CI1002', 160008), ('VI1003', 160008) ; 

Scénario

 Select scn,[1] AS Misc,[2] As Cargo,[3] As Vessel from ( select inv_num, scn, ROW_NUMBER()OVER(PARTITION BY scn ORDER BY (SELECT NULL))RN from @Table1)T PIVOT (MAX(inv_num) FOR RN IN ([1],[2],[3]))PVT