计算列组中的列数
Posted
技术标签:
【中文标题】计算列组中的列数【英文标题】:Count the number of columns in a column group 【发布时间】:2020-02-26 16:34:34 【问题描述】:我需要报告每位工程师每月的平均客户访问次数。 我的 SQL 查询创建了一个包含开始日期和结束日期之间月份的临时表,并将其连接到主数据表,以确保即使在没有访问的月份也能返回行。
因此,从 SQL 返回的数据示例可能是:
我的报告有两个列组,一个代表年份,一个代表月份,我有一个工程师的行组。
对于此报告,日期始终返回为当月的第一天,即使实际访问可能在任何日期。
每年年底有一个单元格,其中包含 Count(Customer) 和总计工程师在该年进行的访问次数。我还想要一个单元格来显示当年每个月的平均访问次数。
对于一整年,我可以简单地除以 12。但是对于部分年份,我需要计算那一年的月份列数。
我尝试了 CountDistinct(Month) 但这仅计算至少有一次访问的月份,从而使每月平均值不正确。
如何,包括没有数据的列?
谢谢。
【问题讨论】:
【参考方案1】:我这样做的方法是在您的临时日期表中添加一列,其中选择了月份数。
您可以通过计算临时表中的月份然后将值附加到其中来做到这一点,或者,如果日期表包含的不仅仅是月份,则根据您传入的参数计算出来。
例如
SELECT *, DATEFIFF("m", @startDate, @endDate) as NoOfMonths
INTO #myTempDateTable
FROM myDateTable
WHERE etc...
然后在 s-s-rS 中,您只需将总数除以该数字即可。
【讨论】:
你好艾伦。感谢您的回复。这不完全是我所需要的,但我稍作修改以适应它,它工作正常。我按照您的建议添加了一个列,但是由于我按年份分组,该列包含每年的月数。然后,我可以将总访问次数除以这个数字,得到每月平均值。以上是关于计算列组中的列数的主要内容,如果未能解决你的问题,请参考以下文章