當前位置:首頁 » 編程語言 » sql縱表轉橫表

sql縱表轉橫表

發布時間: 2022-08-22 12:30:17

『壹』 求一條sql語句,把圖一轉換成圖二。

select t1.cpname,t2,pejian as peijian1,t3.peijian as peijian2,t4.peijian as peijian3 from (select cpname from t gruop by cpname) as t1 left jion t as t2 on t1.cpname=t2.cpname left jion t as t3 on t1.cpname=t3.cpname and t2.peijian<>t3.peijian left jion t as t4 on t1.cpname=t4.cpname and t2.peijian<>t4.peijian and t3.peijian<>t4.peijian
試試吧,應該差不多。縱表改橫表一般用游標實現或者程序實現,如果只有有限列,語句倒是可以。

『貳』 sql server 縱表轉橫表

如果單純是你如上數據的話這樣:

創建表:

createtablet
(idint,
orderidint,
prfnoint,
prfidvarchar(10));


insertintotvalues(16385,171202,1,'FB065_1');
insertintotvalues(16385,171202,2,'FB065_06');
insertintotvalues(16385,171202,3,'FB065_06');
insertintotvalues(16385,171202,4,'FB065_06');

insertintotvalues(16386,171202,1,'FB065_1');
insertintotvalues(16386,171202,2,'FB065_06');
insertintotvalues(16386,171202,3,'FB065_06');
insertintotvalues(16386,171202,4,'FB065_06');

執行:

selectid,orderid,
max(casewhenprfno=1thenprfidend)prfid1,
max(casewhenprfno=2thenprfidend)prfid2,
max(casewhenprfno=3thenprfidend)prfid3,
max(casewhenprfno=4thenprfidend)prfid4
fromtgroupbyid,orderid

結果:

如果需求復雜的話,就要改別的方法了。

『叄』 mysql 縱表轉橫表,高手請支招

你這個需要後台處理一下才可以,直接轉換比較麻煩,效率也不高。因為你需要計算出每天的開始時間和結束時間insert into newtable select employeeID,days,MAX(cardTime) as endtime,Min(cardTime) as starttime from
table group by employeeID,days; 大概就這意思,自己在調試調試吧

『肆』 SQL 如何查詢時 豎著的數據 橫著顯示

你這個是將縱表轉換為橫表,例如如下數據:
'wangming', 'shuxue', 100
'wangming', 'yuwen', 90
'wangming', 'yingyu', 140

可以使用如下語句處理:
select a.v_name,a.v_score shuxue,b.v_score yuwen,c.v_score yingyu from temp_1 a,temp_1 b,temp_1 c
where a.v_name=b.v_name
and a.v_name=c.v_name
and a.v_name='wangming'
and a.v_course='shuxue'
and b.v_course='yuwen'
and c.v_course='yingyu';

『伍』 oracle sql 中 如何實現table的行列轉換

你所謂的行列轉換應該是指縱表轉橫表,橫表轉縱表.
給你個例子
縱表轉橫表:
使用DECODE語句,可以很方便的將縱表轉為橫表,例子如下:
原表查詢結果:
ID MAJOR CURRENT_CREDITS
------ ---------------- ---------------
10000 Computer Science 98
10000 History 88
10001 Computer Science 75
10000 Economics 66
我們要把各科成績從同一列轉到不同的列中去。
SQL>?select id,
sum(decode(major,』Computer Science』,current_credits,0)) cs,
sum(decode(major,』History』,current_credits,0)) his,
sum(decode(major,』Economics』,current_credits,0)) eco
from students
group by id
ID CS HIS ECO
------ ----------- ------------- -----
10000 98 88 66
10001 75

橫表轉縱表:
使用 UNION 即可實現將橫表轉為縱表,以上面的表為例:
轉換前:
ID CS HIS ECO
------ ----------- ------------- -----
10000 98 88 66
SQL>?select id, 』Computer Science』 major,cs current_credits
from students
union
select id, 』History』 major,his current_credits
from students
union
select id, 』Economics』 major,eco current_credits
from students
ID MAJOR CURRENT_CREDITS
------ ---------------- ---------------
10000 Computer Science 98
10000 History 88
10000 Economics 66

『陸』 oracle 動態縱表轉橫表

需要寫一個存儲過程,其中的表名字,欄位名稱可以通過函數參數傳進去。

然後組織動態SQL用於查詢結果,然後再通過循環將縱表數據拼接為列。

注意,由於是動態SQL,只建議內部使用,不要直接將存儲過程參數開放到外邊,防止SQL注入,另外,縱表如果數據量過多或欄位值過長,要防止存放拼接後值的字元串超長,建議使用CLOB類型。

『柒』 資料庫縱表變橫表會不會影響性能

橫表就是普通的建表方式,如一個表結構為:主鍵、欄位1、欄位2、欄位3。。。 如果變成縱表後,則表結構為: 主鍵、欄位代碼、欄位值。而欄位代碼則為欄位1、欄位2、欄位3。 具體為電信行業的例子。以用戶帳單表為例一般出賬時用戶有很多費用客戶,其數據一般存儲為:時間,客戶ID,費用科目,費用。這種存儲結構一般稱為縱表,其特點是行數多,欄位少。縱表在使用時由於行數多,統計用戶數或對用戶進行分檔時還需要進行GROUP BY 操作,性能低,且操作不便,為提高性能,通常根據需要將縱表進行匯總,形成橫表,比如:時間、客戶ID,基本通話費、漫遊通話費,國內長途費、國際長途費....。通常形成一個客戶一行的表,這種表統計用戶數或做分檔統計時比較方便。另外,數據挖掘時用到的寬表一般也要求是橫表結構。縱表對從資料庫到內存的映射效率是有影響的,但細一點說也要一分為二:縱表的初始映射要慢一些;縱表的變更的映射可能要快一些,如果只是改變了單個欄位時,畢竟橫表欄位比縱表要多很多

『捌』 資料庫sql 問題

select年份,sum(casewhen季度=1then產量end),sum(casewhen季度=2then產量end),sum(casewhen季度=3then產量end),sum(casewhen季度=4then產量end)from表名groupby年份orderby年份

熱點內容
手機上傳播病毒 發布:2025-01-18 13:49:20 瀏覽:503
空調壓縮機電路 發布:2025-01-18 13:42:42 瀏覽:545
空間訪問的記錄恢復 發布:2025-01-18 13:26:19 瀏覽:999
雲伺服器mysql怎麼連接 發布:2025-01-18 13:26:08 瀏覽:648
主動加密 發布:2025-01-18 13:25:28 瀏覽:815
哥手機的密碼是什麼 發布:2025-01-18 13:24:36 瀏覽:466
伺服器託管用什麼寬頻 發布:2025-01-18 13:24:00 瀏覽:234
android谷歌地圖 發布:2025-01-18 13:22:59 瀏覽:551
入門反編譯 發布:2025-01-18 13:13:07 瀏覽:846
蒙皮演算法 發布:2025-01-18 12:57:53 瀏覽:550