CREATE TABLE T(FIELDNAME VARCHAR(1), FIELDCONTENT VARCHAR(9))INSERT INTO T
SELECT 'a' , 'a1content' FROM DUAL UNION ALL
SELECT 'b' , 'b1content' FROM DUAL UNION ALL
SELECT 'c' , 'c1content' FROM DUAL UNION ALL
SELECT 'a' , 'a2content' FROM DUAL UNION ALL
SELECT 'b' , 'b2content' FROM DUAL UNION ALL
SELECT 'c' , 'c2content' FROM DUAL UNION ALL
SELECT 'a' , 'a3content' FROM DUAL UNION ALL
SELECT 'c' , 'c3content' FROM DUALSELECT NUM, A, B, C
FROM
(SELECT T1.NUM, A.A, B.B, C.C
FROM
(SELECT ROWNUM NUM
FROM T) T1,
(SELECT ROWNUM NUM, FIELDCONTENT A
FROM T
WHERE FIELDNAME = 'a') A,
(SELECT ROWNUM NUM, FIELDCONTENT B
FROM T
WHERE FIELDNAME = 'b') B,
(SELECT ROWNUM NUM, FIELDCONTENT C
FROM T
WHERE FIELDNAME = 'c') C
WHERE T1.NUM = A.NUM(+)
AND T1.NUM = B.NUM(+)
AND T1.NUM = C.NUM(+)
ORDER BY T1.NUM) T
WHERE (NOT A IS NULL) OR (NOT B IS NULL) OR (NOT C IS NULL)不明白你为啥有这种要求
SELECT 'a' , 'a1content' FROM DUAL UNION ALL
SELECT 'b' , 'b1content' FROM DUAL UNION ALL
SELECT 'c' , 'c1content' FROM DUAL UNION ALL
SELECT 'a' , 'a2content' FROM DUAL UNION ALL
SELECT 'b' , 'b2content' FROM DUAL UNION ALL
SELECT 'c' , 'c2content' FROM DUAL UNION ALL
SELECT 'a' , 'a3content' FROM DUAL UNION ALL
SELECT 'c' , 'c3content' FROM DUALSELECT NUM, A, B, C
FROM
(SELECT T1.NUM, A.A, B.B, C.C
FROM
(SELECT ROWNUM NUM
FROM T) T1,
(SELECT ROWNUM NUM, FIELDCONTENT A
FROM T
WHERE FIELDNAME = 'a') A,
(SELECT ROWNUM NUM, FIELDCONTENT B
FROM T
WHERE FIELDNAME = 'b') B,
(SELECT ROWNUM NUM, FIELDCONTENT C
FROM T
WHERE FIELDNAME = 'c') C
WHERE T1.NUM = A.NUM(+)
AND T1.NUM = B.NUM(+)
AND T1.NUM = C.NUM(+)
ORDER BY T1.NUM) T
WHERE (NOT A IS NULL) OR (NOT B IS NULL) OR (NOT C IS NULL)不明白你为啥有这种要求
"WHERE T1.NUM = A.NUM(+)
AND T1.NUM = B.NUM(+)
AND T1.NUM = C.NUM(+) "中的 num(+) 是什么意思?
可以在from中等价换成left join