请尝试查询 - 它应该做的伎俩 - 请只是改变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