ID COLUMN1 COLUMN2 COLUMN3 COLUMN4 COLUMN VAL BMC
1 1 3 4 2 BS 1 TABLE1
2 1 3 4 2 BM 2 TABLE1
3 1 3 4 2 BH 3 TABLE1
4 1 3 4 2 MC 4 TABLE1
5 1 3 4 2 JC 6 TABLE1
6 1 3 4 2 QC 7 TABLE1
7 1 3 4 2 SM 8 TABLE1
COLUMN1=1 字段代表第一个字段名称,对应VAL=1时的COLUMN列的值BS
COLUMN2=2 字段代表第一个字段名称,对应VAL=3时的COLUMN列的值BH
COLUMN3=4 字段代表第一个字段名称,对应VAL=4时的COLUMN列的值MC
COLUMN4=2 字段代表第一个字段名称,对应VAL=2时的COLUMN列的值BM
COLUMN1 COLUMN2 COLUMN3 COLUMN4 BMC 这几列值,每行是相同的。只有ID,COLUMN,VAL不同。
我想从上表组成一个SQL语句,语句是
SELECT BS,BH,MC,BM FROM TABLE1
看看有办法组成这个语句吗?
1 1 3 4 2 BS 1 TABLE1
2 1 3 4 2 BM 2 TABLE1
3 1 3 4 2 BH 3 TABLE1
4 1 3 4 2 MC 4 TABLE1
5 1 3 4 2 JC 6 TABLE1
6 1 3 4 2 QC 7 TABLE1
7 1 3 4 2 SM 8 TABLE1
COLUMN1=1 字段代表第一个字段名称,对应VAL=1时的COLUMN列的值BS
COLUMN2=2 字段代表第一个字段名称,对应VAL=3时的COLUMN列的值BH
COLUMN3=4 字段代表第一个字段名称,对应VAL=4时的COLUMN列的值MC
COLUMN4=2 字段代表第一个字段名称,对应VAL=2时的COLUMN列的值BM
COLUMN1 COLUMN2 COLUMN3 COLUMN4 BMC 这几列值,每行是相同的。只有ID,COLUMN,VAL不同。
我想从上表组成一个SQL语句,语句是
SELECT BS,BH,MC,BM FROM TABLE1
看看有办法组成这个语句吗?
create table t(
id int,
column1 int,
column2 int,
column3 int,
column4 int,
COL varchar2(20),
val int,
bmc varchar2(20)
)
insert into t values (1,1,3,4,2,'BS',1,'TABLE1');
insert into t values (2,1,3,4,2,'BM',2,'TABLE1');
insert into t values (3,1,3,4,2,'BH',3,'TABLE1');
insert into t values (4,1,3,4,2,'MC',4,'TABLE1');
insert into t values (5,1,3,4,2,'JC',5,'TABLE1');
insert into t values (6,1,3,4,2,'QC',6,'TABLE1');
insert into t values (7,1,3,4,2,'SM',7,'TABLE1');
insert into t values (8,2,3,4,5,'CD',1,'TABLE2');
insert into t values (9,2,3,4,5,'BH',2,'TABLE2');
insert into t values (10,2,3,4,5,'CC',3,'TABLE2');
insert into t values (11,2,3,4,5,'TH',4,'TABLE2');
insert into t values (12,2,3,4,5,'DG',5,'TABLE2');
COMMIT;
SELECT 'SELECT '||
MAX(DECODE(COLUMN1, VAL, COL))||','||
MAX(DECODE(COLUMN2, VAL, COL))||','||
MAX(DECODE(COLUMN3, VAL, COL))||','||
MAX(DECODE(COLUMN4, VAL, COL))||' FROM '||BMC S
FROM T GROUP BY BMC;S
--------------------------------------------------------------------------------
SELECT BS,BH,MC,BM FROM TABLE1
SELECT BH,CC,TH,DG FROM TABLE2
SELECT ENAME, T.HIREDATE
FROM EMP T
WHERE
NOT EXISTS (SELECT 1 FROM EMP T1 WHERE T1.HIREDATE < T.HIREDATE)
OR
NOT EXISTS (SELECT 1 FROM EMP T1 WHERE T1.HIREDATE > T.HIREDATE)