SQL基础5:ORACLE、DB2中列转行函数使用

今天遇见一个工作问题,表中有218个字段、1600行。要把200列转为行
首先用case when 肯定不行,毕竟有200个字段。其实针对ORACLE11g,有专门的列转行函数 unpivot,附上自己写的一小段Sql语句

一、oracle列转行
SELECT
PRIMPOLLUTE,
CODE_POLLUTE,
POLLUTEVALUE
 from STUDENTS--表名
  unpivot (POLLUTEVALUE for CODE_POLLUTE in 
 (W01010_VALUE, W01010_ISSTANDARDS, W01010_STANDARDVALUESTRING, W01001_VALUE,   W01001_ISSTANDARDS, W01001_STANDARDVALUESTRING, W01009_VALUE,   W01009_ISSTANDARDS, W01009_STANDARDVALUESTRING, W01019_VALUE,   W01019_ISSTANDARDS, W01019_STANDARDVALUESTRING, W01018_VALUE,   W01018_ISSTANDARDS, W01018_STANDARDVALUESTRING, W01017_VALUE,   W01017_ISSTANDARDS, W01017_STANDARDVALUESTRING, W21003_VALUE,   W21003_ISSTANDARDS, W21003_STANDARDVALUESTRING, W21011_VALUE,   W21011_ISSTANDARDS, W21011_STANDARDVALUESTRING, W21001_VALUE,   W21001_ISSTANDARDS, W21001_STANDARDVALUESTRING, W99038_VALUE,   W99038_ISSTANDARDS, W99038_STANDARDVALUESTRING, W99039_VALUE,   W99039_ISSTANDARDS, W99039_STANDARDVALUESTRING, W21017_VALUE,   W21017_ISSTANDARDS, W21017_STANDARDVALUESTRING, W99041_VALUE,   W99041_ISSTANDARDS, W99041_STANDARDVALUESTRING, W99042_VALUE,   W99042_ISSTANDARDS, W99042_STANDARDVALUESTRING, W99053_VALUE,   W99053_ISSTANDARDS, W99053_STANDARDVALUESTRING, W99043_VALUE,   W99043_ISSTANDARDS, W99043_STANDARDVALUESTRING, W20117_VALUE,   W20117_ISSTANDARDS, W20117_STANDARDVALUESTRING, W99044_VALUE,   W99044_ISSTANDARDS, W99044_STANDARDVALUESTRING, W21016_VALUE,   W21016_ISSTANDARDS, W21016_STANDARDVALUESTRING, W23002_VALUE,   W23002_ISSTANDARDS, W23002_STANDARDVALUESTRING, W22001_VALUE,   W22001_ISSTANDARDS, W22001_STANDARDVALUESTRING, W19002_VALUE,   W19002_ISSTANDARDS, W19002_STANDARDVALUESTRING, W21019_VALUE,   W21019_ISSTANDARDS, W21019_STANDARDVALUESTRING, W02003_VALUE,   W02003_ISSTANDARDS, W02003_STANDARDVALUESTRING, W21038_VALUE,   W21038_ISSTANDARDS, W21038_STANDARDVALUESTRING, W21022_VALUE,   W21022_ISSTANDARDS, W21022_STANDARDVALUESTRING, W21007_VALUE,   W21007_ISSTANDARDS, W21007_STANDARDVALUESTRING, W99048_VALUE,   W99048_ISSTANDARDS, W99048_STANDARDVALUESTRING, W99049_VALUE,   W99049_ISSTANDARDS, W99049_STANDARDVALUESTRING, W24004_VALUE,   W24004_ISSTANDARDS, W24004_STANDARDVALUESTRING, W99050_VALUE,   W99050_ISSTANDARDS, W99050_STANDARDVALUESTRING, W24009_VALUE,   W24009_ISSTANDARDS, W24009_STANDARDVALUESTRING, W24003_VALUE,   W24003_ISSTANDARDS, W24003_STANDARDVALUESTRING, W24017_VALUE,   W24017_ISSTANDARDS, W24017_STANDARDVALUESTRING, W24024_VALUE,   W24024_ISSTANDARDS, W24024_STANDARDVALUESTRING, W24046_VALUE,   W24046_ISSTANDARDS, W24046_STANDARDVALUESTRING, W24047_VALUE,   W24047_ISSTANDARDS, W24047_STANDARDVALUESTRING, W24048_VALUE,   W24048_ISSTANDARDS, W24048_STANDARDVALUESTRING, W24049_VALUE,   W24049_ISSTANDARDS, W24049_STANDARDVALUESTRING, W24050_VALUE,   W24050_ISSTANDARDS, W24050_STANDARDVALUESTRING, W24062_VALUE,   W24062_ISSTANDARDS, W24062_STANDARDVALUESTRING, W24064_VALUE,   W24064_ISSTANDARDS, W24064_STANDARDVALUESTRING, W25038_VALUE,   W25038_ISSTANDARDS, W25038_STANDARDVALUESTRING, W31001_VALUE,   W31001_ISSTANDARDS, W31001_STANDARDVALUESTRING, W31002_VALUE,   W31002_ISSTANDARDS, W31002_STANDARDVALUESTRING, W31004_VALUE,   W31004_ISSTANDARDS, W31004_STANDARDVALUESTRING, W31003_VALUE,   W31003_ISSTANDARDS, W31003_STANDARDVALUESTRING, W25002_VALUE,   W25002_ISSTANDARDS, W25002_STANDARDVALUESTRING, W25003_VALUE,   W25003_ISSTANDARDS, W25003_STANDARDVALUESTRING, W25004_VALUE,   W25004_ISSTANDARDS, W25004_STANDARDVALUESTRING, W99063_VALUE,   W99063_ISSTANDARDS, W99063_STANDARDVALUESTRING, W25034_VALUE,   W25034_ISSTANDARDS, W25034_STANDARDVALUESTRING, W25010_VALUE,   W25010_ISSTANDARDS, W25010_STANDARDVALUESTRING, W25011_VALUE,   W25011_ISSTANDARDS, W25011_STANDARDVALUESTRING, W25013_VALUE,   W25013_ISSTANDARDS, W25013_STANDARDVALUESTRING, W99052_VALUE,   W99052_ISSTANDARDS, W99052_STANDARDVALUESTRING, W99054_VALUE,   W99054_ISSTANDARDS, W99054_STANDARDVALUESTRING, W25019_VALUE,   W25019_ISSTANDARDS, W25019_STANDARDVALUESTRING, W99055_VALUE,   W99055_ISSTANDARDS, W99055_STANDARDVALUESTRING, W99056_VALUE,   W99056_ISSTANDARDS, W99056_STANDARDVALUESTRING, W25030_VALUE,   W25030_ISSTANDARDS, W25030_STANDARDVALUESTRING, W25032_VALUE,   W25032_ISSTANDARDS, W25032_STANDARDVALUESTRING, W99057_VALUE,   W99057_ISSTANDARDS, W99057_STANDARDVALUESTRING, W25022_VALUE,   W25022_ISSTANDARDS, W25022_STANDARDVALUESTRING, W23020_VALUE,   W23020_ISSTANDARDS, W23020_STANDARDVALUESTRING, W23022_VALUE,   W23022_ISSTANDARDS, W23022_STANDARDVALUESTRING, W23025_VALUE,   W23025_ISSTANDARDS, W23025_STANDARDVALUESTRING, W99058_VALUE,   W99058_ISSTANDARDS, W99058_STANDARDVALUESTRING, W26002_VALUE,   W26002_ISSTANDARDS, W26002_STANDARDVALUESTRING, W26048_VALUE,   W26048_ISSTANDARDS, W26048_STANDARDVALUESTRING, W99010_VALUE,   W99010_ISSTANDARDS, W99010_STANDARDVALUESTRING, W99064_VALUE,   W99064_ISSTANDARDS, W99064_STANDARDVALUESTRING, W29004_VALUE,   W29004_ISSTANDARDS, W29004_STANDARDVALUESTRING, W21009_VALUE,   W21009_ISSTANDARDS, W21009_STANDARDVALUESTRING, W20047_VALUE,   W20047_ISSTANDARDS, W20047_STANDARDVALUESTRING, W25052_VALUE,   W25052_ISSTANDARDS, W25052_STANDARDVALUESTRING, W22007_VALUE,   W22007_ISSTANDARDS, W22007_STANDARDVALUESTRING, W23036_VALUE,   W23036_ISSTANDARDS, W23036_STANDARDVALUESTRING, W32003_VALUE,   W32003_ISSTANDARDS, W32003_STANDARDVALUESTRING, W21023_VALUE,   W21023_ISSTANDARDS, W21023_STANDARDVALUESTRING, W33007_VALUE,   W33007_ISSTANDARDS, W33007_STANDARDVALUESTRING, W33005_VALUE,   W33005_ISSTANDARDS, W33005_STANDARDVALUESTRING, W99003_VALUE,   W99003_ISSTANDARDS, W99003_STANDARDVALUESTRING, W33020_VALUE,   W33020_ISSTANDARDS, W33020_STANDARDVALUESTRING, W33021_VALUE,   W33021_ISSTANDARDS, W33021_STANDARDVALUESTRING, W33022_VALUE,   W33022_ISSTANDARDS, W33022_STANDARDVALUESTRING, W33019_VALUE,   W33019_ISSTANDARDS, W33019_STANDARDVALUESTRING, W33010_VALUE,   W33010_ISSTANDARDS, W33010_STANDARDVALUESTRING, W33011_VALUE,   W33011_ISSTANDARDS, W33011_STANDARDVALUESTRING, W33025_VALUE,   W33025_ISSTANDARDS, W33025_STANDARDVALUESTRING, W33012_VALUE,   W33012_ISSTANDARDS, W33012_STANDARDVALUESTRING, W33047_VALUE,   W33047_ISSTANDARDS, W33047_STANDARDVALUESTRING, W33052_VALUE,   W33052_ISSTANDARDS, W33052_STANDARDVALUESTRING, W33029_VALUE,   W33029_ISSTANDARDS, W33029_STANDARDVALUESTRING, W25043_VALUE,   W25043_ISSTANDARDS, W25043_STANDARDVALUESTRING, W20136_VALUE,   W20136_ISSTANDARDS, W20136_STANDARDVALUESTRING, W99059_VALUE,   W99059_ISSTANDARDS, W99059_STANDARDVALUESTRING, W99004_VALUE,   W99004_ISSTANDARDS, W99004_STANDARDVALUESTRING, W21013_VALUE,   W21013_ISSTANDARDS, W21013_STANDARDVALUESTRING, W20061_VALUE,   W20061_ISSTANDARDS, W20061_STANDARDVALUESTRING, W20038_VALUE,   W20038_ISSTANDARDS, W20038_STANDARDVALUESTRING, W99060_VALUE,   W99060_ISSTANDARDS, W99060_STANDARDVALUESTRING, W20023_VALUE,   W20023_ISSTANDARDS, W20023_STANDARDVALUESTRING, W20004_VALUE,   W20004_ISSTANDARDS, W20004_STANDARDVALUESTRING, W99061_VALUE,   W99061_ISSTANDARDS, W99061_STANDARDVALUESTRING, W20012_VALUE,   W20012_ISSTANDARDS, W20012_STANDARDVALUESTRING, W20101_VALUE,   W20101_ISSTANDARDS, W20101_STANDARDVALUESTRING, W20095_VALUE,   W20095_ISSTANDARDS, W20095_STANDARDVALUESTRING, W20089_VALUE,   W20089_ISSTANDARDS, W20089_STANDARDVALUESTRING))a
二、DB2列转行

可以先点链接看DB2列转行函数讲解,在看案例

原表:

select * from YWWATER.HLSZNDJCJGTJ where PJJG = '平均值' 
原表1
原表2
select aa.*,aa.NF||'-'||aa.YF shijian,b.WATERQUALITYLEVELTARGETNAME,
case when b.PERIOD = 'P' then '平水期' when b.PERIOD = 'F' then '丰水期' when b.PERIOD = 'K' then '枯水期'
else null end PERIOD,
c.REGIONCODE,c.REGIONNAME from
(select 
a.NF,
a.YF,
a.HL,
a.DMMC,
a.DMLX ,
a.PJJG,
a.POINTCODE,
a.POINTNAME,
q.polutcode,
q.polut_value
from YWWATER.HLSZNDJCJGTJ_LJ a,
TABLE (VALUES
('Ph(pH无量纲)',a.JCXM_PH),
('溶解氧',a.JCXM_RYL),
('高锰酸盐指数',a.JCXM_GMSYZS),
('生化需氧量(BOD5)',a.JCXM_SHXYL),
('氨氮',a.JCXM_AD),
('石油类(石油醚萃取)',a.JCXM_SYL),
('挥发酚',a.JCXM_HFF),
('汞',a.JCXM_GONG),
('铅',a.JCXM_QIAN),
('镉',a.JCXM_GE),
('阴离子表面活性剂',a.JCXM_YLZBMHXJ),
('铬(六价)',a.JCXM_LUO),
('氟化物(以F-计)',a.JCXM_FHW),
('总磷(以P计)',a.JCXM_ZL),
('氰化物',a.JCXM_QHW),
('硫化物',a.JCXM_LHW),
('砷',a.JCXM_SHEN),
('化学需氧量(CODcr)',a.JCXM_HXXYL),
('铜',a.JCXM_TONG),
('锌',a.JCXM_XIN),
('硒(四价)',a.JCXM_XI)
)
AS q(polutcode, polut_value)) aa
left join  (select   YEARNUMBER||'-'||MONTHNUMBER||'-'||POINTNAME pointcode,max(WATERQUALITYLEVELTARGETNAME) WATERQUALITYLEVELTARGETNAME,
max(PERIOD) PERIOD
from YWWATER.T_ENV_MANUAL_WATERWQ_MONTH group by YEARNUMBER||'-'||MONTHNUMBER||'-'||POINTNAME   ) b on
aa.nf||'-'||aa.YF||'-'||aa.DMMC =b.pointcode
left join TCODE.T_COD_REGION c on substr(aa.POINTCODE,4,4)||'00000000' = c.REGIONCODE
where aa. PJJG = '平均值'

结果


DB2列转行结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容