請嘗試查詢 - 它應該做的伎倆 - 請只是改變t_tab
到your_table_name
,它應該工作
WITH
t_tab2 AS
(
SELECT t.code,
CASE WHEN SUBSTR(t.code,1,1) IN (1,2,3) THEN 8 END Out1,
CASE WHEN SUBSTR(t.code,2,1) IN (1,2,3) THEN 7 END Out2,
CASE WHEN SUBSTR(t.code,3,1) IN (1,2,3) THEN 6 END Out3,
CASE WHEN SUBSTR(t.code,4,1) IN (1,2,3) THEN 5 END Out4,
CASE WHEN SUBSTR(t.code,5,1) IN (1,2,3) THEN 4 END Out5,
CASE WHEN SUBSTR(t.code,6,1) IN (1,2,3) THEN 3 END Out6,
CASE WHEN SUBSTR(t.code,7,1) IN (1,2,3) THEN 2 END Out7,
CASE WHEN SUBSTR(t.code,8,1) IN (1,2,3) THEN 1 END Out8
FROM t_tab t
)
SELECT tt.code,
CASE WHEN tt.out1||tt.out2||tt.out3||tt.out4||
tt.out5||tt.out6||tt.out7||tt.out8 IS NULL THEN NULL
ELSE REGEXP_REPLACE(
REGEXP_REPLACE(RTRIM('Species' || ' ' || tt.out8 || ', ' || tt.out7|| ', '
|| tt.out6 || ', ' || tt.out5 || ', '
|| tt.out4 || ', ' || tt.out3 || ', '
|| tt.out2 || ', ' || tt.out1, ', ')
|| ' sick', ', | ,', ','), ',{1,}', ', ') END AS Outcome
FROM t_tab2 tt
它給我的結果:
1 88881133 Species 1, 2, 3, 4 sick
2 88888888
3 88888833 Species 1, 2 sick
4 88888811 Species 1, 2 sick
5 88888111 Species 1, 2, 3 sick
6 88888881 Species 1 sick
你好,你的腳本似乎只捕獲'1'。我該如何修改它,以便我可以同時使用'1'和'3'來表示生病呢? (對不起,我發佈了這個更早但顯然它沒有通過) – Jake
@Jake如果你仔細觀察,我將1和3翻譯爲1,以使相似的情況條件更簡單。看看newcode。 0不生病,1生病。 – woot
哦,謝謝!讓我先嚐試吸收,對我來說很多新東西:) – Jake