2010-04-23 4 views
0

У меня есть таблица в SQL, какКоличество запросов в SQL

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

и выходе необходимо в виде трех колонок

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

Вы имеете в виду, вам нужно иметь два счета в каждой строке? – Kangkan

+0

да мне нужна две учетные записи в каждой строке – Nisha

+0

Какую версию SQL Server вы используете? SQL Server 2000, 2005 или 2008 –

ответ

1

Ok, так как у сказал SQL Server 2005, я покажу вам реализацию используя рябину.

Допущения: 1.) Базовая группа должна быть Id. Учет ID 1 и ID 2 не должен находиться в одной строке.

Решения с 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 

Результат:

1 25 31 
1 35 44 
1 50 59 

Надеется, что это помогает. Для вашего использования просто удалите Iner temp table UserAccount и используйте свою физическую таблицу.

Смежные вопросы