用union all
創(chuàng)新互聯(lián)公司專注于賀蘭網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供賀蘭營銷型網(wǎng)站建設(shè),賀蘭網(wǎng)站制作、賀蘭網(wǎng)頁設(shè)計(jì)、賀蘭網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造賀蘭網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供賀蘭網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
假設(shè)列名分別為 col1 cola colb...
select col1,cola
from tabname
where ...
union all
select col1,colb
from tabname
where ...
union all
select col1,colc
from tabname
where ...
union all
select col1,cold
from tabname
where ...
union all
select col1,cole
from tabname
where ...
union all
select col1,colf
from tabname
where ...
樓主這種 典型的行列轉(zhuǎn)換問題。
Oracle 一般就通過 DECODE 或者 CASE WHEN 來處理。
SQL CREATE TABLE TEST_YLX (
2 name VARCHAR2(2),
3 zfname VARCHAR2(6),
4 tdate DATE
5 );
Table created.
SQL
SQL INSERT INTO TEST_YLX VALUES ('A', 'size1', TO_DATE('2010-02-01', 'YYYY-MM-D
D') );
1 row created.
SQL INSERT INTO TEST_YLX VALUES ('A', 'size2', TO_DATE('2010-02-01', 'YYYY-MM-D
D') );
1 row created.
SQL INSERT INTO TEST_YLX VALUES ('B', 'size1', TO_DATE('2010-02-01', 'YYYY-MM-D
D') );
1 row created.
SQL INSERT INTO TEST_YLX VALUES ('C', 'size3', TO_DATE('2010-02-01', 'YYYY-MM-D
D') );
1 row created.
SQL
SQL SELECT
2 name,
3 SUM ( DECODE(zfname, 'size1', 1, 0) ) AS size1,
4 SUM ( DECODE(zfname, 'size2', 1, 0) ) AS size2,
5 SUM ( CASE WHEN(zfname = 'size3') THEN 1
6 ELSE 0
7 END
8 ) AS size3
9 FROM
10 test_ylx
11 GROUP BY
12 name;
NAME SIZE1 SIZE2 SIZE3
---- ---------- ---------- ----------
A 1 1 0
B 1 0 0
C 0 0 1
SQL
上面的例子中, size1 和 size2 是用 DECODE
size3 用 CASE WHEN
看具體情況需要,而使用。
========================================
唯一麻煩的是
這個(gè)SQL, 需要預(yù)先知道, size1 size2 size3 這些信息
如果表中新增加了 size4 , 需要修改 SQL 語句。
oracle下可以用函數(shù)decode處理:
select 產(chǎn)品名稱,
sum(decode(季度,'第一季度',銷售額,0)) 第一季度銷售額,
sum(decode(季度,'第二季度',銷售額,0)) 第二季度銷售額,
sum(decode(季度,'第三季度',銷售額,0)) 第三季度銷售額,
sum(decode(季度,'第四季度',銷售額,0)) 第四季度銷售額,
from 表名
group by 產(chǎn)品名稱;
with??t(cate_displayname,info_waritername,count)?as?(
select?'2014年','lizifeng',1?from?dual?
union?all
select?'歷史沿革','wenqingwen',20?from?dual?
union?all
select?'領(lǐng)導(dǎo)講話','lizifeng',3?from?dual?
)
SELECT?cate_displayname,
nvl(lizifeng,0)?as?lizifeng,
nvl(wenqingwen,0)?as?wenqingwen
FROM???t
PIVOT?(
sum(count)????????----?pivot_clause
FOR?info_waritername??????????----?pivot_for_clause
IN??('lizifeng'?as?lizifeng,'wenqingwen'?as?wenqingwen)???----?pivot_in_clause
);
輸出:
CATE_DISPLAYNAME???????????LIZIFENG?WENQINGWEN
------------------------?----------?----------
2014年????????????????????????????1??????????0
歷史沿革??????????????????????????0?????????20
領(lǐng)導(dǎo)講話??????????????????????????3??????????0