2014-04-09 43 views
0

我想在本月的每個第一個月份顯示下面的代碼。 因此,對於四月,它將擁有自己的'display_count_pending_outer' ,一旦5月1日到達,它將顯示一個新的'display_count_pending_outer'。 在圖像中,我想在每個月的第一天顯示它。如何顯示特定日期的輸出?

<cfquery datasource ="Intranet" name="GetDeptSubmissions">SELECT * FROM CSEReduxResponses</cfquery> 
<cfquery dbtype="query" name="GetPending">SELECT * FROM GetDeptSubmissions WHERE status = 1 AND execoffice_status = 0</cfquery> 
<cfquery dbtype="query" name="GetApproved">SELECT * FROM GetDeptSubmissions WHERE status = 1 AND execoffice_status = 1</cfquery> 
<cfquery dbtype="query" name="GetDenied">SELECT * FROM GetDeptSubmissions WHERE status = 1 AND execoffice_status = 2</cfquery> 


<cfoutput> 

    <div> 
     <div class="display_count pending_outer"> 
      <div class="display_count_desc pending_inner">Pending</div> 
      <cfif GetPending.RecordCount gt 0><a href="cse_execoffice_pending.cfm"></cfif> 
       <span class="display_count_number">#GetPending.RecordCount#</span> 
      <cfif GetPending.RecordCount gt 0></a></cfif> 
     </div><!--- /div class="display_count" ---> 
     <div class="display_count approved_outer"> 
      <div class="display_count_desc approved_inner">Approved *</div> 
      <cfif GetApproved.RecordCount gt 0><a href="cse_execoffice.cfm?approved"></cfif> 
       <span class="display_count_number">#GetApproved.RecordCount#</span><br> 
      <cfif GetApproved.RecordCount gt 0></a></cfif> 
     </div><!--- /div class="display_count" ---> 
     <div class="display_count denied_outer"> 
      <div class="display_count_desc denied_inner">Denied</div> 
      <cfif GetDenied.RecordCount gt 0><a href="cse_execoffice.cfm?denied"></cfif> 
       <span class="display_count_number">#GetDenied.RecordCount#</span><br> 
      <cfif GetDenied.RecordCount gt 0></a></cfif> 
     </div><!--- /div class="display_count" ---> 
    </div> 
</cfoutput> 

現在它這樣表示 enter image description here

+0

當您運行發佈的代碼時會發生什麼? –

+1

我不認爲你提供了足夠的信息來獲得一個很好的答案。我建議你看看TSQL函數'DatePart'。例如'SELECT DATEPART(day,GETDATE())'返回9(4月9日)。你的查詢可能看起來像'SELECT * FROM GetDeptSubmissions WHERE status = 1 AND execoffice_status = 0 AND DatePart(day,YourDateColumnHere)= 1' – InbetweenWeekends

+0

現在它將所有月份的所有數據都存入一個div – user3408399

回答

1

我認爲你正在做的很長的路要走您的數據。現在,您正在選擇該表中的所有內容,然後根據WHERE status=1 and the value of execoffice_status進行過濾。

相反,因爲你追求的是相關聯的每個execoffice_status的總記錄數,你可以寫你的查詢是這樣的:

SELECT 
    COUNT(*) AS total_count, execoffice_status 
FROM 
    CSEReduxResponses 
WHERE 
    status = 1 
GROUP BY 
    execoffice_status

應返回1個記錄中的execoffice_status每個唯一值表。如果此查詢目前爲止是正確的,則您需要執行的操作是GROUP BY whatever date column you have

SELECT 
    CAST(MONTH(date) AS VARCHAR(2)) + '-' + CAST(YEAR(date) AS VARCHAR(4)) AS theDate, 
    COUNT(*) AS total_count, 
    execoffice_status 
FROM 
    CSEReduxResponses 
WHERE 
    status = 1 
GROUP BY 
    CAST(MONTH(date) AS VARCHAR(2)) + '-' + CAST(YEAR(date) AS VARCHAR(4)) 
    execoffice_status

所有你可能需要做的就是添加一個ORDER BY條款和日期範圍爲WHERE子句進一步過濾下來的結果。使用CF輸出這些數據在這一點上應該是一件輕而易舉的事情。

+0

非常感謝!有沒有辦法把日期放在WHERE子句中,不要硬編碼,然後按系統日期走? (execoffice_date BETWEEN'2014-04-1'和'2014-11-3') – user3408399

+0

SQL Server使用getDate()返回當前數據庫服務器的日期和時間。您可能需要格式化它以匹配您的存儲日期格式。 –

+0

謝謝,雖然我不認爲這會解決我的問題。從我有變化。 – user3408399

相關問題