【问题标题】:sql query for monthly datasql查询月度数据
【发布时间】:2013-07-09 05:56:12
【问题描述】:

我编写了这个查询,当我从下拉列表中选择一年时,它会给出所有 12 个月的所有 365 天的每日数据。

SELECT
      YEAR(Date) AS [Year]
    , MONTH(Date) AS [Month]
    , COUNT(*) AS [Total]
FROM EnquiryMaster
WHERE EnquiryOwner = '" + enqowner + "'
     AND DATEPART(yyyy, Date) = '" + year + "'
     AND orgid = '" + orgid + "'
GROUP BY
      YEAR(Date)
    , MONTH(Date)

UNION ALL

SELECT
      YEAR(Date) AS [Year]
    , NULL
    , COUNT(*)
FROM EnquiryMaster
WHERE EnquiryOwner = '" + enqowner + "'
     AND DATEPART(yyyy, Date) = '" + year + "'
     AND orgid = '" + orgid + "'
GROUP BY YEAR(Date)

我想编写一个查询,该查询将同时选择月份和年份并仅显示该月份的数据

【问题讨论】:

  • 您对列日期使用哪种数据类型?

标签: sql sql-server


【解决方案1】:

假设我理解了这个问题,我认为这就是你想要的

SELECT
    DATEPART(yyyy, Date), 
    DATEPART(mm, Date),
    COUNT(*) AS [Total]
FROM EnquiryMaster
GROUP BY
    DATEPART(yyyy, Date), 
    DATEPART(mm, Date)
ORDER BY
    DATEPART(yyyy, Date), DATEPART(mm, Date)

【讨论】:

  • DATEPART(mm, Date)],选择语句中缺少逗号
  • 它给出了每月的总计。我想按月和按天.......我想检索一个月中所有 30 或 31 天的数据
【解决方案2】:

如果你只想要一个月的结果,那么把它放在 where 子句中(1 代表 1 月,2 代表 2 月)

SELECT
      YEAR(Date) AS [Year]
    , MONTH(Date) AS [Month]
    , COUNT(*) AS [Total]
FROM EnquiryMaster
WHERE EnquiryOwner = '" + enqowner + "'
     AND DATEPART(yyyy, Date) = '" + year + "'
     AND orgid = '" + orgid + "'
     AND MONTH(Date) = '" + month + "'
GROUP BY
      YEAR(Date)
    , MONTH(Date)

UNION ALL

SELECT
      YEAR(Date) AS [Year]
    , NULL
    , COUNT(*)
FROM EnquiryMaster
WHERE EnquiryOwner = '" + enqowner + "'
     AND DATEPART(yyyy, Date) = '" + year + "'
     AND orgid = '" + orgid + "'
      AND MONTH(Date) = '" + month + "'
GROUP BY YEAR(Date)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-07
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    相关资源
    最近更新 更多