【问题标题】:SQL GROUP BY monthSQL GROUP BY 月
【发布时间】:2011-12-07 15:56:08
【问题描述】:

查看图片。

在我的报告中,我需要为每个“项目名称”提供总成本、小时数、天数

由于某种原因,我无法查看按月对每个项目的所有数据进行分组的视图,例如,如果您看到 2010 年 7 月有 2 个条目,我希望将其显示为总计一行。谁能帮帮我。

SELECT     TOP (100) PERCENT Date_year, Date_month_number, Date_month_name, Service, Hours, Days, ProjectName, Cost
FROM         dbo.Resources_group_projectname
WHERE     (Service LIKE '%Housing%')
GROUP BY ProjectName, Date_year, Date_month_number, Date_month_name, Hours, Days, Cost, Service
ORDER BY Date_year, Date_month_number

【问题讨论】:

  • 好吧,您的GROUP BY 指定了将组分开的其他字段。您需要进一步说明您的目标是什么以及分组应该如何工作。
  • 图片的用处远不如sample code
  • 您想如何组合/解析不同的列,例如小时、天和成本?选择 MAX 值?将它们相加?
  • 我在 2010 年 7 月拨打的电话有 2 条记录。我希望有 1 条记录总计小时/天数和成本,并将其放入该月该项目的一条记录中
  • 他表示他想要当月的总计,所以解决方案对我来说似乎相当明显。

标签: sql sql-server syntax reporting-services group-by


【解决方案1】:

您的列列表不包含任何聚合。请尝试以下操作:

SELECT Date_year, Date_month_number, Date_month_name, Service, SUM(Hours), SUM(Days), ProjectName, SUM(Cost)
FROM dbo.Resources_group_projectname
WHERE (Service LIKE '%Housing%')
GROUP BY ProjectName, Date_year, Date_month_number, Date_month_name, Service
ORDER BY Date_year, Date_month_number

【讨论】:

  • 所以我需要对天数、小时数和成本求和?
  • 是的,您需要对这些列求和才能得到当月的总数。
【解决方案2】:

您的重复出现是因为您不仅仅按项目和月份进行分组,特别是包括小时和天。

因此,您应该按照您实际希望作为输出中每行的键的内容进行分组,可能是 Project_Name、Date_Year 和 Date_Month_Number。您显示的每个其他字段都应该是一个聚合字段,例如总和(小时)

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    相关资源
    最近更新 更多