2016-07-17 1 views
-1

J'ai le tableau 1 comme ceci:Diviser une colonne en 3 colonnes?

---------------- 
| id | col | 
---------------- 
| 1 | 7 | 
| 2 | 6 | 
| 3 | 1 | 
| 4 | 8 | 
| 5 | 9 | 
| 6 | 5 | 
| 7 | 4 | 
| 8 | 3 | 
| 9 | 2 | 
---------------- 

Je veux créer un nouveau tableau obtenir des données de la colonne col du tableau 1 et obtenir le résultat comme celui-ci:

------------------- 
| A | B | C | 
------------------- 
| 7 | 6 | 1 | 
| 8 | 9 | 5 | 
| 4 | 3 | 2 | 
------------------- 

Toutes les suggestions? Merci beaucoup.

+0

** Je ne sais pas ce que vous demandez. ** (Et il y a une possibilité que votre question sera être mis en attente pour cette raison). Quand vous dites * new table *, voulez-vous dire une table avec trois champs INTEGER nommés A, B et C? Demandez-vous que pour le premier enregistrement, la colonne 'A' devrait contenir le' col' pour 'id' 1,' B' devrait contenir le 'col' pour' id' 2, etc? –

+0

@BobKaufman oui, je veux dire une nouvelle table avec trois champs INTEGER nommés A, B, C; et dans la nouvelle table, la première rangée se compose des 3 premières rangées de la table 1, la deuxième rangée se compose des 3 rangées suivantes de la table1, etc. – Hanaka

Répondre

3

En supposant l'ID est incrémentale

Declare @Table table (id int,col int) 
Insert Into @Table values 
(1,7), 
(2,6), 
(3,1), 
(4,8), 
(5,9), 
(6,5), 
(7,4), 
(8,3), 
(9,2) 


Select ColA=max(case when ID % 3 = 1 then col else 0 end) 
     ,ColB=max(case when ID % 3 = 2 then col else 0 end) 
     ,ColC=max(case when ID % 3 = 0 then col else 0 end) 
From @Table 
Group By ceiling(ID/3.0) 

Retours

ColA ColB ColC 
7  6  1 
8  9  5 
4  3  2