我正在尝试创建一个表,其中第 3 列的值将取决于第 1 列的值是否出现在第 2 列的任何行中。
这是我要创建的表的样子:
doc_name doc_used tool
---------------------------------
MEA123 MEA123 tool1
MEA123 Null tool1
MEA555 Null Null
MEA554 Null Null
MEA123 Null tool1
但我只设法让它在第一行工作:
doc_name doc_used tool
---------------------------------
MEA123 MEA123 tool1
MEA123 Null Null
MEA555 Null Null
MEA555 Null Null
MEA123 Null Null
这是我试过的代码:
CREATE TABLE `/mydataset` AS (
SELECT
doc_name,
doc_used,
(CASE
WHEN doc_name in (doc_used) then 'tool1'
END) as tool
FROM `/test_dct_tool`)
可能的 doc_used 列表是未知的,所以我想检查列 doc_name 的值是否存在于 col doc_used 的整个值列表中。我试过使用“exists”和“in (select doc_used from )”,但也无济于事。
最佳答案
你似乎想要:
SELECT doc_name, doc_used,
(CASE WHEN doc_name IN (SELECT t2.doc_used FROM `/test_dct_tool`)
THEN 'tool1'
END) as tool
FROM `/test_dct_tool` t;
关于SQL - 列值取决于另一个列值是否出现在第三列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52307868/