我在使用select语句返回正确的信息时遇到了麻烦
表:
prefix | suffix | alternate
------ | ------ | --------
A | 12345 | 0
B | 67890 | 0
C | 0 | 555555
这是我的查询
SELECT
CASE WHEN prefix = 'C' THEN alternate
ELSE CONCAT(prefix, suffix) END as Result
FROM table
我希望看到结果:
Result
------
A12345
B67890
555555
我实际看到的内容:
555555
如果我使用此选择取出CONCAT
SELECT
CASE WHEN prefix = 'C' THEN alternate
ELSE suffix END as Result
FROM table
我得到了我想要的行数,但没有得到正确的列值。我在前两行中缺少前缀。
结果
12345
67890
555555
关于如何在不使用union重复代码的情况下执行此操作的想法?
Select concat(prefix,suffix) as result from table
union
select alternate as result from table
答案 0 :(得分:2)
你可以做这样的事情
SELECT
CASE WHEN prefix <> 'C'
THEN prefix||suffix
ELSE cast (alternate as char(20))
END as Result
FROM table