2014-01-24 45 views
1

我在嘗試一些聚合技術來獲取數據庫上的非重複值,但在放置像ltrim之類的聚合技術之前,我總是得到相同的結果。獲取不重複的值(Oracle)

我的查詢:

SELECT 'Data' 
     ||','||LTRIM(TO_CHAR(TRUNC(CREATE_TIME),'MM/dd/yyyy')) 
     ||','||LTRIM(TO_CHAR(TRUNC(CLOSE_TIME),'MM/dd/yyyy')) 
     ||','||COUNT(*) 
FROM APP_ACCOUNT.OTRS_TICKET 
WHERE CREATE_TIME BETWEEN SYSDATE -7 AND SYSDATE 
AND CLOSE_TIME BETWEEN SYSDATE -7 AND SYSDATE 
GROUP BY TRUNC(CREATE_TIME), TRUNC(CLOSE_TIME) 
ORDER BY TRUNC(CREATE_TIME), TRUNC(CLOSE_TIME); 

這裏的結果是,我總是得到:

Data,01/17/2014,01/17/2014,16 
Data,01/17/2014,01/20/2014,1 
Data,01/17/2014,01/21/2014,2 
Data,01/18/2014,01/18/2014,2 
Data,01/19/2014,01/19/2014,1 
Data,01/19/2014,01/20/2014,1 
Data,01/19/2014,01/21/2014,1 
Data,01/20/2014,01/20/2014,6 
Data,01/20/2014,01/21/2014,2 
Data,01/20/2014,01/22/2014,1 
Data,01/21/2014,01/21/2014,13 
Data,01/21/2014,01/22/2014,1 

相反的,(在這裏就是我真正需要的結果)

Data,01/17/2014,01/20/2014,1 
Data,01/18/2014,01/18/2014,2 
Data,01/19/2014,01/21/2014,1 
Data,01/20/2014,01/22/2014,1 
Data,01/21/2014,01/22/2014,1 

表結構體。

CREATE_TIME (DATE) 
CLOSE_TIME (DATE) 
+2

你能解釋一下你想做什麼嗎?你也可以使用小寫字母。 –

+0

我不想重複日期,我只想得到每一個日期 – user3098728

+0

像LTRIM這樣的聚合技術? 'LTRIM'不是一個聚合函數......另外,你想要什麼,例如'01/17/2014,01/17/2014'?丟棄?加起來?爲什麼選擇'01/17/2014,01/20/2014'? – Amadan

回答

1
SELECT 'Data' 
||','||LTRIM(TO_CHAR(TRUNC(CREATE_TIME),'MM/dd/yyyy')) 
||','||LTRIM(TO_CHAR(TRUNC(MAX(CLOSE_TIME)),'MM/dd/yyyy')) 
||','||COUNT(TICKETS_CLOSED) 
FROM APP_ACCOUNT.OTRS_TICKET 
WHERE CREATE_TIME BETWEEN SYSDATE -7 AND SYSDATE 
AND CLOSE_TIME BETWEEN SYSDATE -7 AND SYSDATE 
GROUP BY TRUNC(CREATE_TIME) 
ORDER BY TRUNC(CREATE_TIME) 
+0

感謝您的查詢,我得到了我需要的答案,並且我在查詢||','|| COUNT(DISTINCT TRUNC(CREATE_TIME))中添加了一個新行以獲取創建時間的結果。謝謝哥們 – user3098728

0

它看起來像你想通過CREATE_TIME分組,並獲得該日期最近的CLOSE_TIME。嘗試從您的group by語句中刪除CLOSE_TIME,然後選擇MAX(CLOSE_TIME)。