![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 修修 ![]()
![]() |
1樓 |
您的ID如果照順序不會跳號的話,可以用 交叉分析表的 TRANSFORM 來處理
如果ID 會跳號的話,要再加一個欄位 變成 ID Row (依序放入 1 2 3 1 2 3....)Loop Value 就可以作 這個 交叉分析表了
本篇文章回覆於2019-12-01 18:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓 |
你可以參閱以下
使用 FOR XML PATH 、CTE、PIVOT 產生動態欄位統計表 https://dotblogs.com.tw/joysdw12/2013/09/10/asp-net-sql-for-xml-path-cte-pivot-dymanic-columns 一定能符合你的需求
本篇文章回覆於2019-12-03 00:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓
最有價值解答
真的有點難 ![]() |
alter procedure proc_qq
as create table #kk( id int, loop int, value int) insert #kk select 1,1,12 insert #kk select 2,1,13 insert #kk select 3,1,4 insert #kk select 4,2,11 insert #kk select 5,2,2 insert #kk select 6,2,5 insert #kk select 8,3,12 insert #kk select 9,3,24 insert #kk select 10,3,56 insert #kk select 11,4,78 insert #kk select 12,4,54 insert #kk select 13,4,23 insert #kk select 14,5,76 insert #kk select 15,5,13 insert #kk select 16,5,5 insert #kk select 17,6,4 insert #kk select 18,6,7 insert #kk select 19,6,8 select 自動編號=identity(int,1,1),* into #rep from #kk alter table #rep add loopid int null declare @自動編號 int declare @loop int declare @loopid int DECLARE db_cursor CURSOR FOR SELECT 自動編號,loop,loopid from #rep OPEN db_cursor FETCH NEXT FROM db_cursor INTO @自動編號,@loop,@loopid WHILE @@FETCH_STATUS = 0 BEGIN if @自動編號=1 begin update #rep set loopid=1 where 自動編號=1 end if @自動編號<>1 begin if @loop=(select loop from #rep where 自動編號=@自動編號-1) begin update #rep set loopid=(select loopid+1 from #rep where 自動編號=@自動編號-1) where 自動編號=@自動編號 end end if @自動編號<>1 begin if @loop<>(select loop from #rep where 自動編號=@自動編號-1) begin update #rep set loopid=1 where 自動編號=@自動編號 end end FETCH NEXT FROM db_cursor INTO @自動編號,@loop,@loopid END CLOSE db_cursor DEALLOCATE db_cursor declare @sql nvarchar(2000)='' select distinct loopid into #repA from #rep declare @i int= 1 WHILE @i<= (select max(loop) from #rep) BEGIN set @sql='alter table #repA add loop'+convert(nvarchar(1),@i)+ ' int null' execute(@sql) set @sql='update t1 set loop'+convert(nvarchar(1),@i)+ '=t2.value from #repA t1 join #rep t2 on t1.loopid=t2.loopid where loop='''+convert(nvarchar(1),@i)+'''' -- select @sql execute(@sql) SET @i = @i + 1 END select * from #repA
本篇文章回覆於2019-12-03 11:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |