|
我绞尽脑汁终于想出一个和其他人都不同的,和木头大师恰好成旋转90度,哈哈。
WITH class_nationality as (
SELECT '英国人' as s FROM dual
union all
SELECT '瑞典人' FROM dual
union all
SELECT '丹麦人' FROM dual
union all
SELECT '挪威人' FROM dual
union all
SELECT '德国人' FROM dual
),
class_house as(
SELECT '红色' as s FROM dual
union all
SELECT '白色' FROM dual
union all
SELECT '绿色' FROM dual
union all
SELECT '黄色' FROM dual
union all
SELECT '蓝色' FROM dual
),
class_beverages as(
SELECT '茶' as s FROM dual
union all
SELECT '咖啡' FROM dual
union all
SELECT '牛奶' FROM dual
union all
SELECT '啤酒' FROM dual
union all
SELECT '水' FROM dual
),
class_cigarettes as(
SELECT 'pall mall' as s FROM dual
union all
SELECT 'dunhill' FROM dual
union all
SELECT 'blends' FROM dual
union all
SELECT 'blue master' FROM dual
union all
SELECT 'prince' FROM dual
),
class_pets as(
SELECT '狗' as s FROM dual
union all
SELECT '鸟' FROM dual
union all
SELECT '猫' FROM dual
union all
SELECT '马' FROM dual
union all
SELECT '鱼' FROM dual
)
,nationality AS (
SELECT TRIM(SUBSTR(p,2 ,19)) AS s1
,TRIM(SUBSTR(p,22,19)) AS s2
,TRIM(SUBSTR(p,42,19)) AS s3
,TRIM(SUBSTR(p,62,19)) AS s4
,TRIM(SUBSTR(p,82,19)) AS s5
FROM (SELECT SYS_CONNECT_BY_PATH(RPAD(s,19),'\') AS p
FROM class_nationality
WHERE LEVEL=5
CONNECT BY NOCYCLE LEVEL<=5 AND s<>PRIOR s
)
)
,house AS (
SELECT TRIM(SUBSTR(p,2 ,19)) AS s1
,TRIM(SUBSTR(p,22,19)) AS s2
,TRIM(SUBSTR(p,42,19)) AS s3
,TRIM(SUBSTR(p,62,19)) AS s4
,TRIM(SUBSTR(p,82,19)) AS s5
FROM (SELECT SYS_CONNECT_BY_PATH(RPAD(s,19),'\') AS p
FROM class_house
WHERE LEVEL=5
CONNECT BY NOCYCLE LEVEL<=5 AND s<>PRIOR s
)
)
,beverages AS (
SELECT TRIM(SUBSTR(p,2 ,19)) AS s1
,TRIM(SUBSTR(p,22,19)) AS s2
,TRIM(SUBSTR(p,42,19)) AS s3
,TRIM(SUBSTR(p,62,19)) AS s4
,TRIM(SUBSTR(p,82,19)) AS s5
FROM (SELECT SYS_CONNECT_BY_PATH(RPAD(s,19),'\') AS p
FROM class_beverages
WHERE LEVEL=5
CONNECT BY NOCYCLE LEVEL<=5 AND s<>PRIOR s
)
)
,cigarettes AS (
SELECT TRIM(SUBSTR(p,2 ,19)) AS s1
,TRIM(SUBSTR(p,22,19)) AS s2
,TRIM(SUBSTR(p,42,19)) AS s3
,TRIM(SUBSTR(p,62,19)) AS s4
,TRIM(SUBSTR(p,82,19)) AS s5
FROM (SELECT SYS_CONNECT_BY_PATH(RPAD(s,19),'\') AS p
FROM class_cigarettes
WHERE LEVEL=5
CONNECT BY NOCYCLE LEVEL<=5 AND s<>PRIOR s
)
)
,pets AS (
SELECT TRIM(SUBSTR(p,2 ,19)) AS s1
,TRIM(SUBSTR(p,22,19)) AS s2
,TRIM(SUBSTR(p,42,19)) AS s3
,TRIM(SUBSTR(p,62,19)) AS s4
,TRIM(SUBSTR(p,82,19)) AS s5
FROM (SELECT SYS_CONNECT_BY_PATH(RPAD(s,19),'\') AS p
FROM class_pets
WHERE LEVEL=5
CONNECT BY NOCYCLE LEVEL<=5 AND s<>PRIOR s
)
)
SELECT RPAD(nationality.s1,16)||RPAD(nationality.s2,16)||RPAD(nationality.s3,16)||RPAD(nationality.s4,16)||RPAD(nationality.s5,16)||CHR(10)||
RPAD(house.s1 ,16)||RPAD(house.s2 ,16)||RPAD(house.s3 ,16)||RPAD(house.s4 ,16)||RPAD(house.s5 ,16)||CHR(10)||
RPAD(beverages.s1 ,16)||RPAD(beverages.s2 ,16)||RPAD(beverages.s3 ,16)||RPAD(beverages.s4 ,16)||RPAD(beverages.s5 ,16)||CHR(10)||
RPAD(cigarettes.s1 ,16)||RPAD(cigarettes.s2 ,16)||RPAD(cigarettes.s3 ,16)||RPAD(cigarettes.s4 ,16)||RPAD(cigarettes.s5 ,16)||CHR(10)||
RPAD(pets.s1 ,16)||RPAD(pets.s2 ,16)||RPAD(pets.s3 ,16)||RPAD(pets.s4 ,16)||RPAD(pets.s5 ,16) AS RESULT
FROM nationality
,house
,beverages
,cigarettes
,pets
WHERE ('英国人','红色') IN ((nationality.s1,house.s1),(nationality.s2,house.s2),(nationality.s3,house.s3),(nationality.s4,house.s4),(nationality.s5,house.s5))
AND ('瑞典人','狗') IN ((nationality.s1,pets.s1),(nationality.s2,pets.s2),(nationality.s3,pets.s3),(nationality.s4,pets.s4),(nationality.s5,pets.s5))
AND ('丹麦人','茶') IN ((nationality.s1,beverages.s1),(nationality.s2,beverages.s2),(nationality.s3,beverages.s3),(nationality.s4,beverages.s4),(nationality.s5,beverages.s5))
AND ('绿色','白色') IN ((house.s1,house.s2),(house.s2,house.s3),(house.s3,house.s4),(house.s4,house.s5))
AND ('绿色','咖啡') IN ((house.s1,beverages.s1),(house.s2,beverages.s2),(house.s3,beverages.s3),(house.s4,beverages.s4),(house.s5,beverages.s5))
AND ('pall mall','鸟') IN ((cigarettes.s1,pets.s1),(cigarettes.s2,pets.s2),(cigarettes.s3,pets.s3),(cigarettes.s4,pets.s4),(cigarettes.s5,pets.s5))
AND ('黄色','dunhill') IN ((house.s1,cigarettes.s1),(house.s2,cigarettes.s2),(house.s3,cigarettes.s3),(house.s4,cigarettes.s4),(house.s5,cigarettes.s5))
AND '牛奶' = beverages.s3
AND '挪威人' = nationality.s1
AND ('blends','猫') IN ((cigarettes.s1,pets.s2),(cigarettes.s2,pets.s3),(cigarettes.s3,pets.s4),(cigarettes.s4,pets.s5),(cigarettes.s2,pets.s1),(cigarettes.s3,pets.s2),(cigarettes.s4,pets.s3),(cigarettes.s5,pets.s4))
AND ('dunhill','马') IN ((cigarettes.s1,pets.s2),(cigarettes.s2,pets.s3),(cigarettes.s3,pets.s4),(cigarettes.s4,pets.s5),(cigarettes.s2,pets.s1),(cigarettes.s3,pets.s2),(cigarettes.s4,pets.s3),(cigarettes.s5,pets.s4))
AND ('blue master','啤酒') IN ((cigarettes.s1,beverages.s1),(cigarettes.s2,beverages.s2),(cigarettes.s3,beverages.s3),(cigarettes.s4,beverages.s4),(cigarettes.s5,beverages.s5))
AND ('德国人','prince') IN ((nationality.s1,cigarettes.s1),(nationality.s2,cigarettes.s2),(nationality.s3,cigarettes.s3),(nationality.s4,cigarettes.s4),(nationality.s5,cigarettes.s5))
AND '蓝色' = house.s2
AND ('blends','水') IN ((cigarettes.s1,beverages.s2),(cigarettes.s2,beverages.s3),(cigarettes.s3,beverages.s4),(cigarettes.s4,beverages.s5),(cigarettes.s2,beverages.s1),(cigarettes.s3,beverages.s2),(cigarettes.s4,beverages.s3),(cigarettes.s5,beverages.s4))
RESULT
--------------------------------------------------------------------------------
挪威人 丹麦人 英国人 德国人 瑞典人
黄色 蓝色 红色 绿色 白色
水 茶 牛奶 咖啡 啤酒
dunhill blends pall mall prince blue master
猫 马 鸟 鱼 狗
|
|