如何查看从何处检索 COALESCE 语句的结果?

How can I see where the results from my COALESCE statement have been retrieved from?

我有五个字段需要查看:FirstNameSurnameDateOfBirthidPostcode.

如果我 运行 这个(使用 SQL Server Management Studio (SSMS)):

SELECT COALESCE(FirstName, Surname, DateOfBirth, id, Postcode)
FROM table1

它returns结果是这样的:

1.  DAVID
2.  SUSAN
3.  764329
4.  FRANK
5.  STEPHANIE
6.  HARRIS
7.  10/10/1967
8.  E3 5QP
9.  DAVID
10. JOHN

问题在于确定结果的来源并不总是那么容易。例如,DAVIDJOHN 很容易成为名字或姓氏。

有没有办法查看每个结果的来源?像这样:

1.  DAVID FirstName
2.  SUSAN FirstName
3.  764329 id
4.  FRANK FirstName
5.  STEPHANIE FirstName
6.  HARRIS Surname
7.  10/10/1967 DateOfBirth
8.  E3 5QP Postcode
9.  DAVID Surname
10. JOHN Surname

也许两列结果会更好:一列是结果,一列是起源。

你没有指定 RDBMS,但如果你真的想使用 coalesce 那么你可以尝试这样的事情:

SELECT COALESCE(CONCAT(FirstName,' First Name'), CONCAT(Surname,' Surname'),...)
FROM table1

使用 CONCAT 或 RDBMS 的特定方式进行连接。如果元素之一为 null,CONCAT 应该 return null,因此它应该工作相同。

您还可以按照@manibharataraju 在评论中的建议,使用CASE EXPRESSION 生成一个新列。