当前位置: 首页 > 面试题库 >

您如何用零替换交叉表查询中的空值?

穆正青
2023-03-14
问题内容

基于Access中的以下SQL …

TRANSFORM Sum([Shape_Length]/5280) AS MILES
SELECT "ONSHORE" AS Type, Sum(qry_CurYrTrans.Miles) AS [Total Of Miles]
FROM qry_CurYrTrans
GROUP BY "ONSHORE"
PIVOT qry_CurYrTrans.QComb IN ('1_HCA_PT','2_HCA_PT','3_HCA_PT','4_HCA_PT');

…我的结果返回了以下数据表:

| Type     | Total Of Miles  | 1_HCA_PT  | 2_HCA_PT  | 3_HCA_PT  | 4_HCA_PT |
| ONSHORE  | 31.38           |           | 0.30      | 7.80      |          |

除了 我想在为空的单元格中看到零 之外, 这个结果正是我想要的。

有什么选择呢?如果可能的话,我想避免使用子查询。我也希望查询在Access的“设计视图”中保持可编辑状态。


问题答案:

我认为您必须使用Nz函数,该函数将允许您将NULL转换为另一个值。在这种情况下,我用函数的(可选)部分说:“如果Sum([Shape_Length] /
5280)为NULL,则将其设置为0”。我不记得您 可能 必须在0前后使用引号。

TRANSFORM Nz(Sum([Shape_Length]/5280), 0) AS MILES
SELECT "ONSHORE" AS Type, Sum(qry_CurYrTrans.Miles) AS [Total Of Miles]
FROM qry_CurYrTrans
GROUP BY "ONSHORE"
PIVOT qry_CurYrTrans.QComb IN ('1_HCA_PT','2_HCA_PT','3_HCA_PT','4_HCA_PT');


 类似资料:
  • 问题内容: 我希望有人曾经尝试过这种方法,在我进一步尝试之前可以得到一些建议。 我希望产生类似于sql-server 2000中的交叉表查询的内容。 我有一个类似于以下内容的表结构: 我想做的是通过查询/存储过程来整理数据,以使构建报告更容易。 理想的解决方案将产生如下结果: 问题答案: 我最终使用存储过程(http://www.sqlteam.com/article/dynamic-cross-

  • 你好,我被querydsl(hibernate 4.2.3和postgresql)卡住了。一般来说,它工作得很好,但是我有一个谓词是这样构建的: 现在的问题是用户并不总是有客户。Querydsl 生成交叉联接到客户表的 sql,当用户没有客户时,此查询将返回零个条目,即使应返回这些条目。此客户已保留联接(稍微修改了Spring数据以允许联接提取字段),但仍会创建其他交叉联接。任何想法如何写这样的查

  • 问题内容: 我目前有一个使用以下sql的硬编码视图: 我的问题是是否可以从角色表中的记录动态生成角色列。 问题答案: 您 可以 做您想做的事,但是我不确定 为什么 要这么做。获得动态列别名后,如何计划引用它们?也就是说,如果您从数据库中提取列别名,那么您将如何使用它们呢?我可能错过了您提出问题的原因。 无论如何,我假设您具有这样的结构: 由此,您可以获得有关用户及其角色的信息: 您还可以为特定角色

  • 问题内容: 问题1: 我有一个具有以下结构和数据的表: 我想以以下格式显示这些记录: 我知道我需要使用交叉表/数据透视查询来获得此显示。为此,我基于对它的有限知识对其进行了尝试。以下是我的查询: 根据此查询,我得到以下显示: 任何人都可以帮助我对查询进行适当的更改以获取单行而不是如上所述的多行记录。 问题2: 还有一种方法可以获取特定字段的值作为列的名称。正如你可以在上面看到我有,,…作为标题。取

  • 找到那个预定红绿船的水手了吗?相交 我知道intersect在mysql中不起作用,所以我正在寻找替代方案

  • 问题内容: 我已经搜索过,但没有找到(或理解!)如何做我需要做的事情。我问这个问题有点愚蠢,因为还有其他例子,但是我只是不明白…。 这是我认为的数据: 我需要的是: 我一直在修改在这里找到的代码,但是..任何帮助,我们都感激不尽! 问题答案: 您可以通过几种不同的方式将行转换为列。一种实现方法是使用带有CASE表达式的聚合函数: 参见带有演示的SQL Fiddle 或者由于使用的是SQL Serv