我正在尝试将char数据类型的两列加在一起,以将其代码与描述结合起来。
table1拥有我需要的所有数据,我仅引用table2以获得描述。
例如,表1具有列:
Code
1
2
表2中有列:
Code Description
1 Football
2 Soccer
我基本上是想写一个查询,其中可以显示一列
1 - Football
2 - Soccer
我尝试过:
SELECT
a.Code + ' - ' + b.Description
FROM table1 a
LEFT JOIN table2 b
ON a.Code = b.Code
尽管这样做确实将各列加在一起,但由于某种原因,由于某些原因,它还会产生很多重复的行。
基本上,我只是想要表1中的任何代码,以匹配表2中的代码并带来该描述。
答案 0 :(得分:1)
在第二张表为null的情况下使用合并,在避免重复的情况下使用distinct
SELECT distinct a.Code +' - ' + coalesce(b.Description,'')
FROM table1 a
LEFT JOIN table2 b
ON a.Code = b.Code
or try like below and i dont think you needed join you can do it just by using 2nd tabale
SELECT
b.Code ||' - ' || b.Description)
from
table2 b
答案 1 :(得分:1)
您可以使用ISNULL
处理表2中的缺失值:
SELECT
a.Code + ISNULL(' - ' + b.Description, '')
FROM table1 a
LEFT JOIN table2 b
ON a.Code = b.Code
答案 2 :(得分:1)
使用“左联接”,您将获得表A中的值,而表B中可能不存在这些值。要消除重复项,您可以尝试
SELECT DISTINCT
a.Code + ' - ' + b.Description
FROM table1 a
LEFT JOIN table2 b
ON a.Code = b.Code
OR
SELECT
a.Code + ' - ' + b.Description
FROM table1 a
LEFT JOIN table2 b
ON a.Code = b.Code
GROUP BY a.Code, b.Description
答案 3 :(得分:1)
table1和table2之间是什么关系?我看到上面的查询返回重复项的唯一方法是:如果table1和table2之间的关系是1:Many。意味着table1中的一行可以匹配table2中的多行。
SELECT DISTINCT
a.Code + ' - ' + COALESCE(b.Description, '')
FROM table1 a
LEFT JOIN table2 b
ON a.Code = b.Code;
SELECT DISTINCT
a.Code + ' - ' + b.Description
FROM table1 a
INNER JOIN table2 b
ON a.Code = b.Code;