Номер запроса в sql - PullRequest
       13

Номер запроса в sql

0 голосов
/ 23 апреля 2010

У меня есть таблица в sql

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

и вывод нужно в виде трех столбцов

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

1 Ответ

1 голос
/ 23 апреля 2010

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

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

Решение с пробными данными:

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

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

...