Return 创建视图时的零值
Return the zero value while creating view
如何使用内部联接在 SQL 服务器中创建视图,如 RECAPITULATION TABLE 中所示。我想要未售出的代码也显示为0值?使用 INNER JOIN 语句,它只是 select C001、C002、C005 和 C007。但是,我也想用 0 值显示 C003、C004 和 C006。
一个简单的左连接和聚合就可以满足您的需求。例如,在 CTE 中聚合您的交易 table,然后从您的库存 table 左连接到 cte。对于库存中的每一行,这将导致在您的结果集中显示一行。您可以将 NULL 值替换为零 - 我留给您的任务
with cte as (
select INV_CODE, sum([SOLD_OUT]) as TOTAL
from dbo.[TRANSACTION LOG] group by INV_CODE
)
select inv.INV_CODE, cte.TOTAL
from dbo.[INVENTORY TABLE] as inv
left join cte on inv.INV_CODE = cte.INV_CODE
order by ...;
不确定您为什么关注“内部联接”,因为这不是您实现目标的明显途径。
如何使用内部联接在 SQL 服务器中创建视图,如 RECAPITULATION TABLE 中所示。我想要未售出的代码也显示为0值?使用 INNER JOIN 语句,它只是 select C001、C002、C005 和 C007。但是,我也想用 0 值显示 C003、C004 和 C006。
一个简单的左连接和聚合就可以满足您的需求。例如,在 CTE 中聚合您的交易 table,然后从您的库存 table 左连接到 cte。对于库存中的每一行,这将导致在您的结果集中显示一行。您可以将 NULL 值替换为零 - 我留给您的任务
with cte as (
select INV_CODE, sum([SOLD_OUT]) as TOTAL
from dbo.[TRANSACTION LOG] group by INV_CODE
)
select inv.INV_CODE, cte.TOTAL
from dbo.[INVENTORY TABLE] as inv
left join cte on inv.INV_CODE = cte.INV_CODE
order by ...;
不确定您为什么关注“内部联接”,因为这不是您实现目标的明显途径。