--豎表變行表

來源:互聯網
上載者:User

--豎表變行表
--建立表
create table A(
工號 varchar(20),
日期 smalldatetime,
時間 varchar(20)
)
--插入測試資料
insert into A select '01', '2004-10-01', '07:50'
union select '01', '2004-10-01', '11:35'
union select '01', '2004-10-01', '14:20'
union select '01', '2004-10-02', '08:01'
union select '01', '2004-10-02', '14:30'
union select '02', '2004-10-01', '07:55'
union select '02', '2004-10-02', '07:58'
union select '03', '2004-10-01', '07:56'
--建立預存程序
create proc p_t
as
declare @id varchar(20),@date smalldatetime,@time varchar(50)
select * into #a from A order by 工號,日期,時間
update #a set 時間=case when (工號=@id) and (日期=@date) then @time else 時間 end,
@time=case when (工號=@id) and (日期=@date) then @time+','+時間 else 時間 end,
@id=工號,@date=日期
select 工號,日期,max(時間) as 時間 from #a group by 工號,日期 order by 工號
--執行
exec p_t
--測試結果
工號 日期 時間
---------------------------------------------
01 2004-10-01 00:00:00 07:50,11:35,14:20
01 2004-10-02 00:00:00 08:01,14:30
02 2004-10-01 00:00:00 07:55
02 2004-10-02 00:00:00 07:58
03 2004-10-01 00:00:00 07:56
(所影響的行數為 5 行)



select [Empid] from [Employee]
得出結果:
張三
李四
王五
...
...

想要將它合并成這種結果:
張三,李四,王五...,...

declare @s varchar(8000)
set @s=''
select @s=@s+','+[Empid] from [Employee]
print stuff(@s,1,1,'')




declare @sql varchar(2000)
set @sql=''
select @sql=@sql+[Empid]+',' from [Employee]
set @sql=left(@sql,len(@sql)-1)
print @sql

 


相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。