开发者

Number query in sql

开发者 https://www.devze.com 2022-12-27 17:29 出处:网络
I have table in sql as User | Account -----+--------- 1|25 1|31 1|35 1 开发者_运维问答 |44 1|50 1|59 and output need in as three columns

I have table in sql as

User | Account
-----+---------
  1  |   25
  1  |   31
  1  |   35
  1 开发者_运维问答 |   44
  1  |   50
  1  |   59 

and output need in as three columns

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


Ok, so as u said sql server 2005, I will show you the implementation using rownumber.

Assumptions: 1.) Base group should be Id. Account of ID 1 and ID 2 should not be in the same row.

Solution with Mock data:

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

Result:

1   25  31
1   35  44
1   50  59

Hope it helps. For your use, just remove the Inner temp table UserAccount and use your physical table.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号