我遇到了一些问题,在构建这个查询时遇到了麻烦。
我想把同一个表中的两列堆叠成一个长的单列(我使用UNION语句(,然后,我想生成一个新变量来告诉我数字(stack of column1 and column2,organim_id(是来自第1列还是来自第2列。目前,我一直在尝试这种方法,但我在以下查询中遇到了一个我不理解的问题:
SELECT u.organism_id, case when u.organism_id IN cpl.column1 then 1
else 0
end as is_column1
FROM
(select column1 as organism_id
from table1
UNION
select column2
from table1) as u,
table1 as cpl;
有人知道如何解决这个问题吗?
提前感谢!
一般来说,如果我理解正确的话,可以在对表进行联合之前在表上抛出一个源列。我还建议UNION ALL以避免意外删除重复项:
SELECT
*
FROM
(
SELECT
'Column1' AS Source,
Column1
FROM
Table1
UNION ALL
SELECT
'Column2' AS Source,
Column2
FROM
Table1
) u