我有一些用户需要根据他们的选择跟踪的路径:默认、后退、前排、移动。
如果一个人选择返回,它必须跟踪默认路径 + 返回路径。
表格应该是这样的:
CODE PATH
A1 DEFAULT
A2 DEFAULT
A3 DEFAULT
B1 BACK
B2 BACK
D3 BACK
C2 FRONT
C4 FRONT
E2 MOBILE
E5 MOBILE
我需要使用 case when 的结果(必须是 case when 因为我在 Google Data Studio 中查询,所以我不能使用 where 子句)如下:
CODE PATH
A1 BACK
A2 BACK
A3 BACK
B1 BACK
B2 BACK
D3 BACK
A1 FRONT
A2 FRONT
A3 FRONT
C2 FRONT
C4 FRONT
A1 MOBILE
A2 MOBILE
A3 MOBILE
E2 MOBILE
E5 MOBILE
我试过这个查询,但没有用。
CASE
WHEN PATH IN ('DEFAULT', 'BACK') THEN 'BACK'
WHEN PATH IN ('DEFAULT', 'FRONT') THEN 'FRONT'
WHEN PATH IN ('DEFAULT, ' MOBILE') THEN 'MOBILE'
ELSE NULL
END
有什么线索吗?
答案 0 :(得分:0)
你将需要
SELECT code, 'BACK' AS path FROM example WHERE path IN ('DEFAULT', 'BACK')
UNION ALL
SELECT code, 'FRONT' AS path FROM example WHERE path IN ('DEFAULT', 'FRONT')
UNION ALL
SELECT code, 'MOBILE' AS path FROM example WHERE path IN ('DEFAULT', 'MOBILE')
或
SELECT
code,
UNNEST(CASE path
WHEN 'DEFAULT' THEN ARRAY['BACK', 'FRONT', 'MOBILE']
ELSE ARRAY[path]
END) AS path
FROM example
或者(也许是最好的)
SELECT
code,
trail.result
FROM example
CROSS JOIN (VALUES
('DEFAULT', 'BACK'),
('BACK', 'BACK'),
('DEFAULT', 'FRONT'),
('FRONT', 'FRONT'),
('DEFAULT', 'MOBILE'),
('MOBILE', 'MOBILE')
) AS trail(path, result) USING (path)
仅使用 CASE
表达式无法实现这种重复的行。