27,580
社区成员
发帖
与我相关
我的任务
分享
--测试数据
if not object_id(N'Tempdb..#关连表') is null
drop table #关连表
Go
Create table #关连表([订单号] int,[发票号] int)
Insert #关连表
select 1,2 union all
select 1,3 union all
select 2,3 union all
select 2,4 union all
select 4,5
GO
if not object_id(N'Tempdb..#订单表') is null
drop table #订单表
Go
Create table #订单表([订单号] int,[订单金额] int)
Insert #订单表
select 1,200 union all
select 2,400 union all
select 3,500 union all
select 4,100
GO
if not object_id(N'Tempdb..#发票表') is null
drop table #发票表
Go
Create table #发票表([发票号] int,[发票金额] int)
Insert #发票表
select 2,100 union all
select 3,200 union all
select 4,120 union all
select 5,100
Go
--测试数据结束
SELECT
*,
(CASE
WHEN (订单金额 >= ISNULL(
(
SELECT
SUM(发票金额)
FROM
#发票表
JOIN
#关连表
ON #关连表.发票号 = #发票表.发票号
WHERE
订单号 = #订单表.订单号
), 0
)
)
THEN (订单金额 - ISNULL(
(
SELECT
SUM(发票金额)
FROM
#发票表
JOIN
#关连表
ON #关连表.发票号 = #发票表.发票号
WHERE
订单号 = #订单表.订单号
), 0
)
)
ELSE
0
END
) AS 未收发票金额
FROM
#订单表;