【发布时间】:2018-07-31 13:20:48
【问题描述】:
我正在使用 My Sql 5.7 和 CF11。我想从下面的查询中获取每个月的总 qTotalPrice 和 quoteKeyID。但不是一整年。我想从当月到最近六个月的数据(从 7 月到 2 月)获取它。如果特定月份没有数据,我需要将特定月份显示为 0。
<cfquery name="thisYearsQuotes" datasource="myDB">
SELECT * , MONTH(qDateTime) as qMonth
FROM Quotes
INNER JOIN Accounts
ON Quotes.aID = Accounts.aID
WHERE Accounts.aID = <cfqueryparam value="#VNAI.aID#" cfsqltype="cf_sql_clob" maxlength="255">
AND Quotes.qDateTime > DATE_ADD(NOW(), INTERVAL -365 DAY)
</cfquery>
为了获取每个月的记录,我编写了如下查询。
获取当前月份
<cfquery name="SalesTotalThisMonth" dbtype="query">
SELECT SUM(qTotalPrice) as DollarTotal , COUNT(quoteKeyID) as QuoteCount
FROM thisYearsQuotes
WHERE qMonth = #MONTH(NOW())#
</cfquery>
为了得到一个月的回报
<cfquery name="SalesTotal1MonthAgo" dbtype="query">
SELECT SUM(qTotalPrice) as DollarTotal , COUNT(quoteKeyID) as QuoteCount
FROM thisYearsQuotes
WHERE qMonth = #MONTH(DateAdd("m",-1,NOW()))#
</cfquery>
为了获得两个月的回报,
<cfquery name="SalesTotal2MonthAgo" dbtype="query">
SELECT SUM(qTotalPrice) as DollarTotal , COUNT(quoteKeyID) as QuoteCount
FROM thisYearsQuotes
WHERE qMonth = #MONTH(DateAdd("m",-2,NOW()))#
</cfquery>
等等...明智地我必须得到最后六个月。所以我每个月都写了一些查询。
有没有可能减少代码?
【问题讨论】:
-
您是否尝试返回过去 12 个月的 单人 总数。前任。 750 美元 - 或者您想要过去 12 个月中每个的个人总计。前任。 2018 年 1 月 - 200 美元,2018 年 2 月 - 总计 175 美元,3 月 - 总计 375 美元,等等...
-
顺便说一句,列数据类型可能不是
cf_sql_clob,通常最好同时包含年份和月份以在时间段重叠的情况下进行区分(尽管不会有任何在这里...)。 -
@Ageax。是的。但不是一整年。我想从当月到最近六个月的数据(从 7 月到 2 月)获取它。如果没有特定月份的数据,我需要将特定月份显示为 0。
-
好的,请看下面我的回答。
标签: mysql coldfusion cfml coldfusion-11