全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1537
推到 Plurk!
推到 Facebook!

在SQL2000中如何把資料由列轉成行

尚未結案
Link_Chen
一般會員


發表:25
回覆:22
積分:9
註冊:2004-03-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-01 20:45:03 IP:218.104.xxx.xxx 未訂閱
各位小弟有個有關問題解決不了來請教. 比如說我有如下一個TABLE:tabelA Serialnum Data 1 a 2 b 3 c 4 d 5 null 6 e 7 f 8 g 9 h 10 null … … 其中NULL可能出現的位置不定,但是各個NULL之間的間隔數是一樣的.請問我改如何根據NULL來把table橫過來,變成tableB的形式: Serialnum P1 P2 P3 P4 … 1 a b c d 2 e f g h …
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-01 22:26:35 IP:218.32.xxx.xxx 未訂閱
Link_Chen 你好:    你可以考慮用 Stored Procedure + Temporary Table    來達到你要的結果, 至於細節, 你可以先找找本站相關文章, 以及 MSSQL 的說明文件.
Link_Chen
一般會員


發表:25
回覆:22
積分:9
註冊:2004-03-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-01 22:58:13 IP:218.104.xxx.xxx 未訂閱
Mickey, 你好!我搜索了,但是可能因為我沒搜索對關鍵字,所以沒找到什麼相關帖子. 能不能介紹帖子給小弟,謝謝!
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-01 23:54:15 IP:218.32.xxx.xxx 未訂閱
一時找不到太多, 我印象中 MSSQL 的說明文件, 這部分說的滿清楚的, 你可以先看看. http://delphi.ktop.com.tw/topic.php?topic_id=48261 http://delphi.ktop.com.tw/topic.php?topic_id=51436
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-07-02 09:16:55 IP:210.61.xxx.xxx 未訂閱
Link_Chen您好 就如Mickey前輩所說的, 透過Transact-SQL及暫存檔使直式轉成橫式 以下示意給您參考, 您自己根據需求再去修正
declare @Source table(f1 char(3), f2 char(3))
insert @source (f1,f2) values('1','a')
insert @source (f1,f2) values('2','b')
insert @source (f1,f2) values('3','c')
insert @source (f1,f2) values('4','d')
insert @source (f1,f2) values('5',null)
insert @source (f1,f2) values('6','e')
insert @source (f1,f2) values('7','f')
insert @source (f1,f2) values('8','g')
insert @source (f1,f2) values('9','h')
insert @source (f1,f2) values('10',null)    declare list cursor for 
   select * from @source
open list
declare @f1 int,@f2 char(3)
declare @result table(f1 char(3), f2 char(3), f3 char(3), f4 char(3), f5 char(3))
declare @xf1 char(3), @xf2 char(3), @xf3 char(3), @xf4 char(3), @xf5 char(3)
fetch next from list into @f1,@f2
while @@fetch_status=0 
begin
   declare @col int
   set @col=@f1 % 5
   --print @col
   if @col=1 set @xf1=@f2
    if @col=2 set @xf2=@f2
   if @col=3  set @xf3=@f2
    if @col=4 set @xf4=@f2
     if @col=0 set @xf5=@f2
   if @f2 is null
      insert @result (f1, f2, f3, f4, f5) values (@xf1, @xf2, @xf3, @xf4, @xf5)
   fetch next from list into @f1,@f2
end
close list
deallocate list    select * from @result
Link_Chen
一般會員


發表:25
回覆:22
積分:9
註冊:2004-03-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-07-02 09:21:17 IP:218.104.xxx.xxx 未訂閱
pedro你好, 謝謝你的回答,問題解決了!
系統時間:2024-09-19 11:41:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!