【发布时间】:2016-02-08 15:43:45
【问题描述】:
我想使用 SELECT CASE 将我的查询包含在单独的行中。与其在同一行上重复字段、磁带捕获值和磁带值,不如将它放在单独的行上。有人可以帮忙吗?如果可以的话,谢谢!
这是我当前的查询:
SELECT T.[Loan Identifier], TC.Reviewer,
'Valuation Date' AS [Field],
CASE
WHEN TC.[Valuation Date] <> T.[Valuation Date] THEN TC.[Valuation Date] END AS [Tape Capture Value], T.[Valuation Date] AS [Tape Value],
'Underwriter name' AS [Field],
CASE
WHEN TC.[Underwriter name] <> T.[Underwriter name] THEN TC.[Underwriter name] END AS [Tape Capture Value], T.[Valuation Date] AS [Tape Value]
FROM [dbo].[Tape] AS T
LEFT JOIN [dbo].[Tape Capture] AS TC
ON T.[Loan Identifier] = TC.[Loan Identifier]
TC.Reviewer IS NOT NULL AND TC.[Primary_review_complete?] = 1
我的结果不是当前形式:
我想要下面的形式:
【问题讨论】:
-
大小写表达式在这里对您没有帮助。可能最简单的方法是将其拆分为两个查询(一个用于磁带值,一个用于磁带捕获)。然后使用 UNION ALL 将它们合并到一个结果集中。如果您可以使用一些数据创建一个 sqlfiddle,我们可以提供帮助。
-
嗨,肖恩。我使用 Gorodon 的建议构建了一个 sqlfiddle。但是我仍然无法返回多个列。你能帮忙吗?这是小提琴:sqlfiddle.com/#!6/d94ea/1。谢谢
-
您的小提琴中的示例数据与您发布的图像不匹配。您对 sql fiddle 的输出有何期望。顺便说一句,戈登发布的答案只是表值构造函数存在一个小语法问题。
标签: sql-server tsql join case