2010-04-23 7 views
0

Je table sql commerequête Nombre dans sql

 
User | Account 
-----+--------- 
    1 | 25 
    1 | 31 
    1 | 35 
    1 | 44 
    1 | 50 
    1 | 59 

et de sortie ont besoin en tant que trois colonnes

 
    1 | 25 | 31 
    1 | 35 | 44 
    1 | 50 | 59 
+0

Vous voulez dire que vous avez besoin de deux comptes dans chaque rangée? – Kangkan

+0

oui j'ai besoin de deux comptes dans chaque ligne – Nisha

+0

Quelle version de SQL Server utilisez-vous? Serveur SQL 2000, 2005 ou 2008 –

Répondre

1

Ok, alors que u dit sql server 2005, je vais vous montrer la mise en œuvre en utilisant rownumber. Hypothèses: 1.) Le groupe de base doit être Id. Le compte de ID 1 et ID 2 ne doit pas être dans la même rangée.

Solution avec les données Mock:

SELECT ID, 
     Max(Case When OrderCaluse = 0 Then Account Else NULL END) AS Account1, 
     Max(Case When OrderCaluse = 1 Then Account Else NULL END) AS Account2 
FROM 
( 
    Select ID, 
      Account, 
      (RowNum+1)/2 As GroupClause, 
      (RowNum+1)%2 as OrderCaluse 
    FROM 
    (
     Select *, 
       ROW_NUMBER() Over (Partition by Id order by account) As RowNum 
     FRom 
     (
      Select 1 as Id, 25 as Account 
      Union ALL 
      Select 1, 31 
      Union ALL 
      Select 1, 35 
      Union ALL 
      Select 1, 44 
      Union ALL 
      Select 1, 50 
      Union ALL 
      Select 1, 59 
     ) AS UserAccount 
    ) AS T 
) AS T1 
Group By Id,GroupClause 

Résultat:

1 25 31 
1 35 44 
1 50 59 

Hope it helps. Pour votre utilisation, supprimez simplement la table temporaire Inner UserAccount et utilisez votre table physique.