我在sql中有表
用户 | 帐户 -----+--------- 1 | 25 1 | 31 1 | 35 1 | 44 1 | 50 1 | 59
并输出需要为三列
1 | 25 | 31 1 | 35 | 44 1 | 50 | 59
我在sql中有表
用户 | 帐户 -----+--------- 1 | 25 1 | 31 1 | 35 1 | 44 1 | 50 1 | 59
并输出需要为三列
1 | 25 | 31 1 | 35 | 44 1 | 50 | 59
好的,正如你所说的 sql server 2005,我将向你展示使用 rownumber 的实现。
假设: 1.) 基组应该是 Id。ID 1 和 ID 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 并使用您的物理表。