【问题标题】:Return the zero value while creating view创建视图时返回零值
【发布时间】:2021-10-09 03:50:19
【问题描述】:

如何使用内部联接在 SQL Server 中创建视图,如 RECAPITULATION TABLE 所示。我希望未售罄的代码也显示为 0 值?使用 INNER JOIN 语句,它只选择 C001、C002、C005 和 C007。但是,我也想用 0 值显示 C003、C004 和 C006。

【问题讨论】:

  • 1) 请不要对我们大喊大叫(所有大写字母都被视为大喊大叫)。 2) 请不要将图像用于数据、代码或错误 - 使用格式化和/或表格文本。 3) 请向我们展示您的尝试以及您遇到的问题。
  • @Dale K 谢谢,注意
  • 除了注意,请更新您的问题。
  • 比表格数据更好的是 DDL+DML,人们可以复制和粘贴来测试您的查询。
  • 正如您不想在问题中输入数据一样,我们也不想从屏幕截图中转录数据。如果您希望人们帮助您解决此类问题,请不要设置障碍。让人们尽可能轻松地将代码和数据复制粘贴到 SSMS、dbfiddle 等,以便他们倾向于帮助您。有关提示,请参阅:How do I ask a good question?

标签: sql sql-server tsql inner-join


【解决方案1】:

一个简单的左连接和聚合就可以满足您的需求。例如,将您的事务表聚合到 CTE 中,然后从库存表左连接到 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 ...;

不确定您为什么专注于“内部联接”,因为那不是实现目标的明显途径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2021-08-07
    相关资源
    最近更新 更多