SQL查询来获取格式的结果从一个表
假设,我有3列和9行的表,我使用SQL Server 2008的SQL查询来获取格式的结果从一个表
我想写一个SQL查询来获取数据的前三行从原表中的一行 行然后从第4行到第6行获取数据并放入第二行等等。
表名是 “表1”
Primary_Key | Name | Age
++++++++++++++++++++++++++++
A | Kyle | 45
B | Rob | 66
C | Dhruba | 77
D | Susan | 99
E | Steve | 100
F | Mili | 34
G | Grover | 54
H | Alan | 76
I | Paul | 16
我找的这个结果我运行查询后:(3行,1列)提前
ColumnA
+++++++++++++++
A, Kyle, 45, B, Rob,66, C,Dhruba,77
D,Susan,99, E,Steve , 100,F, Mili, 34
G , Grover , 54,H , Alan , 76,I , Paul , 16
谢谢! “
declare @T table
(
Primary_Key char(1),
Name varchar(10),
Age int
)
insert into @T values
('A' , 'Kyle' , 45),
('B' , 'Rob' , 66),
('C' , 'Dhruba' , 77),
('D' , 'Susan' , 99),
('E' , 'Steve' , 100),
('F' , 'Mili' , 34),
('G' , 'Grover' , 54),
('H' , 'Alan' , 76),
('I' , 'Paul' , 16)
;with C as
(
select *,
(row_number() over(order by Primary_Key) - 1)/3 as rn
from @T
)
select stuff((select ', '+C2.Primary_Key+', '+C2.Name+', '+cast(C2.Age as varchar(10))
from C as C2
where C1.rn = C2.rn
for xml path(''), type).value('.', 'varchar(max)'), 1, 2, '') as ColumnA
from C as C1
group by C1.rn
order by C1.rn
好的尝试,但这似乎并不奏效。语法问题我猜。还想使用NTILE(3)而不是ROW_NUMBER – Kash
@Kash它确实有效。在这里尝试。 http://data.stackexchange.com/stackoverflow/q/118181/ –
@Kash示例数据的插入语句需要SQL Server 2008,查询需要SQL Server 2005或更高版本。如果你有9行,使用ntile(3)将是正确的。 –
”从原始表中获得前三行数据在一行中“。您是否打算将一列中的三个值汇总为一个值? – Kash
表格定义,样本数据和预期输出将非常有用。您还需要包含一个定义行(如果行)的列。 –
更不用说为了达到预期输出而遵循的规则:) – Nonym