【问题标题】:set default value on query column在查询列上设置默认值
【发布时间】:2022-10-13 05:13:15
【问题描述】:

我有一个查询,其中包含列“Cremembers.Name”(这从表“Crewmembers”中提取“Name”列)和“Sum of HoursUW”(这对每个“Crewmember.Name”的不同表“Marine391”中的“HoursUW”求和"。Cremembers.Name 和 Marine391.Crewmembers 之间存在现有关系,其中列出了所有 Cremembers.Name 值,并且仅列出了来自 Marine391.Crewmembers 的值,其中连接字段相等。

在此查询中,如果机组成员没有任何 HoursUW,我希望“Sum of HoursUW”的默认值为 0。

这是当前的 SQL 代码:

SELECT DISTINCTROW Crewmembers.Name, Sum(Marine391_29ft_SAFEBOAT.HoursUW) AS [Sum Of HoursUW]
FROM Crewmembers LEFT JOIN Marine391_29ft_SAFEBOAT ON Crewmembers.[Name] = Marine391_29ft_SAFEBOAT.[Crewmembers].[Value]
GROUP BY Crewmembers.Name;

我尝试像这样使用 nz() 函数:

nz((SELECT DISTINCTROW Crewmembers.Name, Sum(Marine391_29ft_SAFEBOAT.HoursUW), 0) AS [Sum Of HoursUW]
FROM Crewmembers LEFT JOIN Marine391_29ft_SAFEBOAT ON Crewmembers.[Name] = Marine391_29ft_SAFEBOAT.[Crewmembers].[Value]
GROUP BY Crewmembers.Name;

像这样:

SELECT DISTINCTROW Crewmembers.Name, nz(Sum(Marine391_29ft_SAFEBOAT.HoursUW), 0) AS [Sum Of HoursUW]
FROM Crewmembers LEFT JOIN Marine391_29ft_SAFEBOAT ON Crewmembers.[Name] = Marine391_29ft_SAFEBOAT.[Crewmembers].[Value]
GROUP BY Crewmembers.Name;

这些都有语法错误。

如何使用 nz() 函数,或者有没有更好的方法在这个查询中将默认值设置为 0?

提前致谢!!!

【问题讨论】:

  • mysql 还是 ms 访问?请删除不相关的标签

标签: mysql sql ms-access ms-access-2013 default-value


【解决方案1】:

Nz() 直接应用于HoursUW 字段,就像您使用Sum() 一样。

SELECT cm.Name, Sum(Nz(msb.HoursUW, 0)) AS [Sum Of HoursUW]
FROM
    Crewmembers AS cm
    LEFT JOIN Marine391_29ft_SAFEBOAT AS msb
    ON cm.[Name] = msb.[Crewmembers].[Value]
GROUP BY cm.Name;

我没有包括DISTINCTROW,因为查询的结果集行已经由于GROUP By 而不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 2016-02-25
    • 2011-03-23
    相关资源
    最近更新 更多