作为SQL新手,我有一个关于根据案例值选择列的问题。下面的SQL似乎应该可以正常工作(至少对我非常有限的知识),但事实并非如此。有什么想法吗?
SELECT
tbl1.*,
CASE
WHEN tb11.col1 = "1" THEN tbl2.col1
WHEN tbl1.col1 = "2" THEN tbl2.col2
end as tbl2_col_select
FROM tbl1
LEFT JOIN tbl2
ON tbl1.id = tbl2.id AND
tbl1.year = tbl2.year
谢谢!
答案 0 :(得分:1)
在阅读您的评论之后我怀疑您在不同的情况下返回不同的数据类型,因此您需要将其转换为数据类型,因此在每种情况下返回的数据类型都是相同的,
您可以处理此问题的一种方法是转换数据类型以匹配每种情况下的数据类型,例如
SELECT tbl1.*
, CASE
WHEN tb11.col1 = '1'
THEN tbl2.col1
WHEN tbl1.col1 = '2'
THEN CAST(tbl2.col2 AS VARCHAR(100)) --<-- Data type of tbl2.col1
END AS tbl2_col_select
FROM tbl1
LEFT JOIN tbl2 ON tbl1.id = tbl2.id AND tbl1.year = tbl2.year