【发布时间】:2020-05-14 10:09:58
【问题描述】:
我正在尝试对我刚刚在查询中创建的两个 CASE 函数(案例语句中的 2 列 PotentialOrderGain 和 PotentialFreightLoss)求和。我需要通过将这两个案例函数相加来创建一个新列作为 NetGainLoss。我知道我可以使用 cte 方法来做到这一点。但同时,我需要将 3 个表内部连接在一起。这 3 个表是 Person.Address 和 Sales.SalesOrderHeader 和 Sales.vIndividualCustomer。我不知道如何在一个大查询中实现所有这些。请在下面找到我的查询。非常感谢!
select h.SalesOrderID,
i.StateProvinceName as ShipToState,
h.OrderDate,
h.SubTotal,
h.Freight,
case when h.SubTotal>=1500 and h.SubTotal<2000 then 2000-h.SubTotal
when h.SubTotal<1500 then 0
when h.SubTotal>=2000 then 0
end as PotentialOrderGain,
case when h.SubTotal>=1500 and h.SubTotal<2000 then 0.22-h.Freight
when h.SubTotal<1500 then 0
when h.SubTotal>=2000 then 0.22-h.Freight
end as PotentialFreightLoss
from Sales.vIndividualCustomer i
inner join Person.Address a
on a.City = i.City
inner join Sales.SalesOrderHeader h
on a.AddressID = h.ShipToAddressID
where i.StateProvinceName='California'
order by h.SalesOrderID;
【问题讨论】:
标签: sql sql-server join case