T-SQL Case-Then-Else命令在Join中
首先,我要告诉大家,我只是在学习SQL。我的任务是验证T-SQL生成的报告,该报告由曾为我们公司工作的顾问编写。有人能给我解释一下下面的部分在做什么吗?我理解左外连接的概念,但不理解case语句的计算方法T-SQL Case-Then-Else命令在Join中,sql,sql-server,left-join,case,Sql,Sql Server,Left Join,Case,首先,我要告诉大家,我只是在学习SQL。我的任务是验证T-SQL生成的报告,该报告由曾为我们公司工作的顾问编写。有人能给我解释一下下面的部分在做什么吗?我理解左外连接的概念,但不理解case语句的计算方法 From ShipmentQty LEFT OUTER JOIN ShipmentCost ON Case when ShipmentQty.RSLDNM <> 0 Then 0 Else ShipmentQt
From
ShipmentQty
LEFT OUTER JOIN ShipmentCost ON
Case when ShipmentQty.RSLDNM <> 0 Then
0
Else
ShipmentQty.SDSHPN
End = ShipmentCost.FHSHPN
AND
ShipmentQty.RSLDNM = ShipmentCost.FHLDNM
来自
发货数量
左外联接装运成本为ON
发货数量RSLDNM为0时的情况
0
其他的
发货数量SDSHPN
结束=ShipmentCost.fhspn
及
ShipmentQty.RSLDNM=ShipmentCost.FHLDNM
我假设表达式运行时不会出错,但我的任务不是运行SQL,而是验证代码的每个步骤。提前谢谢你,请原谅我的经验不足 这只是意味着如果ShipmentQty.RSLDNM不是0,则使用0,否则,使用ShipmentQty.SDSHPN如果不使用
案例,则更容易理解逻辑。这可能是等效的逻辑:
From ShipmentQty LEFT OUTER JOIN
ShipmentCost
ON ((ShipmentCost.FHSHPN = 0 AND ShipmentQty.RSLDNM <> 0) OR
(ShipmentCost.FHSHPN = ShipmentQty.SDSHPN AND ShipmentQty.RSLDNM = 0)
) AND
ShipmentQty.RSLDNM = ShipmentCost.FHLDNM
自发货数量左外连接
运费
在((ShipmentCost.fhspn=0和ShipmentQty.RSLDNM 0)或
(ShipmentCost.FHSPN=ShipmentQty.SDSHPN和ShipmentQty.RSLDNM=0)
)及
ShipmentQty.RSLDNM=ShipmentCost.FHLDNM
我之所以说“可能”,是因为这没有考虑ShipmentQty.RSLDNM
的NULL
值。因此,如果RSLDNM
为零,则比较为fhspn
到SDSHPN
。如果RSLDNM
不是零,则fhspn
需要为零。联接很简单,情况只是一个条件(),当字段ShipmentQty.RSLDNM为0时,联接将使用0作为值,否则联接将使用ShipmentQty.SDSHPN作为值