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

处理ssrs图表的sql查询表达式中不存在的值

沈华晖
2023-03-14
问题内容

我在ssrs折线图中使用以下查询。它根据每个订单日期计算每月记录的订单数量。

我的问题是,当一个月没有订单时,而不是说零或为空,它将一起删除该月的行。我希望它将其计为零,但也可以使用null。

基本上,无论是否包含信息,我都希望总是有十二行。

我怎样才能解决这个问题?有没有可以使用的表达方式?还是我遗漏了一些显而易见的东西?

SELECT
MONTH(Ord.OrdDate) AS 'MONTH',
COUNT(CASE WHEN @Worker_ID1 IS NULL OR @Worker_ID1 = Worker.ID THEN 1 END) AS 'Worker1',
COUNT(CASE WHEN @Worker_ID2 IS NULL OR @Worker_ID2 = Worker.ID THEN 1 END) AS 'Worker2',
COUNT(CASE WHEN @Worker_ID3 IS NULL OR @Worker_ID3 = Worker.ID THEN 1 END) AS 'Worker3',
COUNT(CASE WHEN @Worker_ID4 IS NULL OR @Worker_ID4 = Worker.ID THEN 1 END) AS 'Worker4',
COUNT(CASE WHEN @Worker_ID5 IS NULL OR @Worker_ID5 = Worker.ID THEN 1 END) AS 'Worker5'

FROM Ord
JOIN Prod ON Ord.Prod_ID = Prod.ID
JOIN ProdType ON Prod.ProdType_ID = ProdType.ID
JOIN Grouping ON Ord.Grouping_ID = Grouping.ID
JOIN Worker ON Grouping.Worker_ID = Worker.ID

WHERE @Year = YEAR(Ord.OrdDate)
AND (@ProdType_ID IS NULL OR @ProdType_ID = ProdType.ID)

GROUP BY MONTH(Ord.OrdDate)

问题答案:

通过删除where子句并在count聚合中进行过滤,使其正常工作。

SELECT
MONTH(Ord.OrdDate) AS 'MONTH',
COUNT(CASE WHEN @Year = YEAR(Ord.OrdDate) AND Worker.ID = @Worker_ID1 AND @ProdType_ID = ProdType.ID THEN 1 END) AS 'Worker1',
COUNT(CASE WHEN @Year = YEAR(Ord.OrdDate) AND Worker.ID = @Worker_ID2 AND @ProdType_ID = ProdType.ID THEN 1 END) AS 'Worker2',
COUNT(CASE WHEN @Year = YEAR(Ord.OrdDate) AND Worker.ID = @Worker_ID3 AND @ProdType_ID = ProdType.ID THEN 1 END) AS 'Worker3',
COUNT(CASE WHEN @Year = YEAR(Ord.OrdDate) AND Worker.ID = @Worker_ID4 AND @ProdType_ID = ProdType.ID THEN 1 END) AS 'Worker4',
COUNT(CASE WHEN @Year = YEAR(Ord.OrdDate) AND Worker.ID = @Worker_ID5 AND @ProdType_ID = ProdType.ID THEN 1 END) AS 'Worker5'

FROM Ord
JOIN Grouping ON Ord.Grouping_ID = Grouping.ID
JOIN Worker ON Grouping.Worker_ID = Worker.ID
JOIN Prod ON Ord.Prod_ID = Prod.ID
JOIN ProdType ON Prod.ProdType_ID = ProdType.ID

GROUP BY MONTH(Ord.OrdDate)


 类似资料:
  • 有从字符串中提取SQL查询的正则表达式吗?我不想验证任何SQL语法,而是只想提取一组SQL命令。这是为了以灵活的方式解析给定的SQL文件/字符串。 给出了以下SQL文件/字符串示例: 一些伪代码示例是:。在将来,我希望用所有(可能的)命令来扩展它。 查找具有以下任一项的起始匹配:(UPDATESELECTINSERTINTO) 零个或多个(包括空格和换行符) 停止在处,它分隔SQL查询。 只要通过

  • 查询表达式可以作为过滤,分组,注解或者是聚合的一个值或者是计算。这里(文档中)有很多内置表达式可以帮助你完成自己的查询。表达式可以组合,甚至是嵌套,来完成更加复杂的计算 支持的算术 Django支持在查询表达式使用加减乘除,求模,幂运算,Python常量,变量甚至是其它表达式。 New in Django 1.7: 增加了对指数运算符**的支持。 一些例子 Changed in Django 1.

  • 查询表达式 查询表达式支持大部分的SQL查询语法,也是ThinkPHP查询语言的精髓,查询表达式的使用格式: where('字段名','表达式','查询条件'); whereOr('字段名','表达式','查询条件'); 5.1还支持新的查询方法 whereField('表达式','查询条件'); whereOrField('表达式','查询条件'); Field使用字段的驼峰命名方式。 表达式不

  • 本文向大家介绍postgresql SELECT查询中的公用表表达式,包括了postgresql SELECT查询中的公用表表达式的使用技巧和注意事项,需要的朋友参考一下 示例 公用表表达式支持提取较大查询的部分。例如:            

  • 问题内容: 我正在尝试找到一种将查询与数据库中的正则表达式匹配的方法。据我所知(尽管我不是专家),尽管大多数DBMS(例如MySQL)都有用于搜索的正则表达式选项,但您只能执行以下操作: 在第1列中找到与我的查询中的正则表达式匹配的所有行。 我想做的是相反的,即: 在第1列中找到所有行,以使第1列中的正则表达式与我的查询匹配。 一个简单的例子-说我有一个像这样的数据库结构: 因此,如果我查询 “

  • 对于精度数学,只要可能,就会使用给定的准确值数值。例如,在比较中所用的数值与给定的值准确相同,无任何变化。在严格的SQL模式下,对于插入具有准确数据类型(DECIMAL或整数)的列的INSERT操作,如果值在列的允许范围内,将插入具有准确值的数值。检索时,所获得的值与插入的值应是相同(如果未采用严格模式,允许INSERT执行截短操作)。 对数值表达式的处理取决于表达式包含的值的类型: ·如果存在任