如何將多行組合成一行?如何在使用SQL語句時將多行組合成一行
例子:
1 infill 20
2 test2 30
3 test3 40
我想一排這樣的組合:
infill 20, test2 30, test4 40
。
如何將多行組合成一行?如何在使用SQL語句時將多行組合成一行
例子:
1 infill 20
2 test2 30
3 test3 40
我想一排這樣的組合:
infill 20, test2 30, test4 40
。
你可能使用JOIN;假設你的表被稱爲T,你可以做SELECT t1。 ,t2。,t3。*從T作爲T1,T作爲T2,T作爲T3);但機會是,這是不是你想要
非常感謝您的回覆,我仍然感到困惑。 – 2015-02-09 22:41:31
1填寫20 2 test2 30 3 test3 40我想要一行填寫20,測試30,test3 40在一欄中,請大家幫忙。 – 2015-02-09 22:51:26
您可以使用稱爲窗口功能之一導致
use TSQL2012
if object_id('pract1') is not null
drop table pract1
go
create table pract1 (
id int identity(1,1) primary key,
name varchar(20) ,
number int
)
insert into pract1(name,number)
values
('infill',20),
('test2',30),
('test4',40)
Select concat(name,' ',number) as currentrow,
concat(lead(name,1) over (order by id), ' ', lead(number,1) over (order by id)) as currentplusonerow,
concat(lead(name,2) over (order by id), ' ', lead(number,2) over (order by id)) as [current+2]
from pract1
currentrow currentplusonerow current+2
infill 20 test2 30 test4 40
test2 30 test4 40
test4 40
編輯什麼:我剛纔注意到你給了,你想有內的一切附加評論一列。然後,下面的代碼將爲您執行它:
Select concat(name,' ',number) +', '+
concat(lead(name,1) over (order by id), ' ', lead(number,1) over (order by id)) +', '+
concat(lead(name,2) over (order by id), ' ', lead(number,2) over (order by id)) as [desiredResult]
from pract1
有一些空的空間,因爲,第2行和第3行沒有行電流+ 2。
非常感謝Mikajlo8。 – 2015-02-10 00:07:41
你如何知道OP使用SQL Server? – 2015-02-10 01:26:03
我真的不知道,但因爲MINH沒有明確說明,我提供了SQL服務器的語法,因爲這是我最舒服的。問候 ;-) – Mikajlo8 2015-02-10 01:51:28
這將嚴重依賴於您正在使用的DBMS。 – 2015-02-10 01:25:15