对于问题的第一部分感到抱歉。尝试在第二部分中用示例进行解释。
我有两张桌子a,b。我根据三列连接这两个表,以从表 b 中检索列“描述”。假设这三列是 id、main_cat 和 sub_cat。如果表 a 中有一行包含 id、main_cat 和 sub_cat 的组合,而表 b 中不存在该行,则说明列为空。如何编写查询,以便如果加入后描述列为空,则根据 id、main_cat 值使用表 b 中的列 main_description 作为描述?
示例 让我们用一个例子来说明这一点:
表a:
id main_cat sub_cat
1 A X
2 B Y
3 A Z
4 C W
表b:
id main_cat sub_cat description main_description
1 A X Description 1 Main Description A
2 B Y Description 2 Main Description B
4 C W Description 3 Main Description C
A Main Description A
B Main Description B
C Main Description C
期望的结果:
id main_cat sub_cat description
1 A X Description 1
2 B Y Description 2
3 A Z Main Description A
4 C W Description 3
尝试在 select 语句中使用 COALESCE 和“Case when”但失败。
对于糟糕的措辞和示例结构感到非常抱歉。我不知道还能怎么问。 sql新手,所以问题的框架不是很好。
SELECT COALESCE(B.OtherDescription, A.Description, 'No Description') 'TheDescription', ISNULL(B.OtherDescription, A.Description) 'No Description2'
FROM A
LEFT OUTER JOIN B ON ( A.id = B.id AND A.main_cat = B.main_cat AND A.sub_cat = B.sub_cat )
我认为你根本不应该使用 Case 语句。 ISNULL 可能不适用于所有类型的 SQL,但 COALESCE 在任何地方都应该是相当标准的。