SQLite:根据case语句选择列

时间:2014-09-17 22:15:06

标签: sql sqlite case

作为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

谢谢!

1 个答案:

答案 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