2011-11-18 40 views
0

我希望在我的代碼中讀取數據庫當前月份的數據應該在上個月的24日到本月23日之間。換句話說,日曆月份在24到23之間。需要在24到23日的範圍內的月份

我正在使用以下代碼。

月,年計算

<cfset curmonth=Month(now())> 
<cfif #curmonth# eq 1> 
    <cfset prevmonth=12> 
<cfelse> 
    <cfset prevmonth=#curmonth# - 1> 
</cfif> 
<cfset curyear=Year(now())> 
<cfset prevyear=#curyear# - 1> 

這是查詢:

<cfquery name="GetMonthlySpentbudget" datasource="#Application.ds#" dbtype="ODBC"> 
SELECT 
    IF(SUM(amount) IS NULL,0,SUM(amount)) as monthlyspentbudget 
FROM orders o 
WHERE 
    <cfif #curmonth# neq 1> 
    if(IsOverBudget=1, 
     DATE(ApprovedDate1)>='#curyear#-#prevmonth#-24' AND 
     DATE(ApprovedDate1)<='#curyear#-#curmonth#-23', 
     DATE(ApprovedDate)>='#curyear#-#prevmonth#-24' AND 
     DATE(ApprovedDate)<='#curyear#-#curmonth#-23' 
    ) 
    <cfelse> 
    if(IsOverBudget=1, 
     DATE(ApprovedDate1)>='#prevyear#-#prevmonth#-24' AND 
     DATE(ApprovedDate1)<='#curyear#-#curmonth#-23', 
     DATE(ApprovedDate)>='#prevyear#-#prevmonth#-24' AND 
     DATE(ApprovedDate)<='#curyear#-#curmonth#-23' 
    ) 
    </cfif> 
    AND 
    FacilityID= #FacilityID# 
    AND 
    o.ApprovedFlag = 1 
    AND 
    o.ApprovedFlag1 = 1 
</cfquery> 

現在我想總月,逐另一個查詢。這是查詢:

SELECT 
    MONTHNAME(approveddate1) AS sMonth, 
    YEAR(approveddate1) AS iYear, 
    SUM(o.amount) AS TotalSale,FacilityId 
FROM orders AS o 
WHERE 
    o.ApprovedFlag = 1 
    AND 
    o.ApprovedFlag1 = 1 
GROUP BY FacilityId, MONTH(approveddate1) 
Order by FacilityId, iyear, smonth 

如何我應該修改查詢來獲取24到23範圍內的月份嗎?

+3

對不起 - 什麼?閱讀這幾次,我仍然沒有明白你的意思。你是說你想要從本月24日到23日的數據? 11月25日會發生什麼? –

+0

大概二月..閏年...... – xQbert

+0

這不是一個真正的ColdFusion問題,是嗎?你只是尋求幫助看起來像SQL。另外,你的CF代碼也有很多問題,比如不恰當的使用#,而不是使用'cfqueryparam'。 – ale

回答

3

也許是這樣的:

SELECT 
    MONTHNAME(GroupingDate) AS sMonth, 
    YEAR(GroupingDate) AS iYear, 
    SUM(amount) AS TotalSale, 
    FacilityId 
FROM (
    SELECT 
    FacilityId, 
    amount, 
    DATE_ADD(
     approveddate1, 
     INTERVAL IF(DAY(approveddate1) < 24, 0, 1) MONTH 
    ) AS GroupingDate 
    FROM orders 
) AS o 
GROUP BY 
    YEAR(GroupingDate), 
    MONTH(GroupingDate), 
    MONTHNAME(GroupingDate), 
    FacilityId 
+0

Thanq..Andriy M ... :) ..你救了我的工作...... – Ritu

相關問題