2014-04-28 354 views
-1

我有表DEMO如何從同一個表中重複的記錄,同時顯示

 
CUST_ID DATE_ENQ 
---------- --------- 
30   28-APR-14 
31   27-APR-14 
30   27-APR-14 

我想輸出是這樣的

 
COUNT(CUST_ID) DATE_ENQ 
-------------- --------- 
      2 27-APR-14 
      1 28-APR-14 

+2

哪個是你的數據庫? MySql,SQL服務器,Orcle等? – TechDo

+0

我的數據庫是Oracle 10g – Hitesh

回答

1

嘗試THIZ

select count(CUST_ID),TO_CHAR(DATE_ENQ,'DD-MON-YYYY') from demo group by TO_CHAR(DATE_ENQ,'DD-MON-YYYY'); 

SQL Fiddle Demo Click Here

+1

沒有理由在DATE_ENQ上使用TO_DATE(理想情況下應該是日期)。 –

+0

@Thorsten Kettner juz查看他們想要的輸出。在那種情況下,有兩個選項..一個由DATE_ENQ組成,另一個由CUST_ID組成。 – Hrithu

+0

不,您會以某種方式感到困惑。 TO_DATE將字符串類型(CHAR,VARCHAR2,NCHAR或NVARCHAR2)轉換爲DATETIME。是什麼讓你認爲DATE_ENQ是一個字符串類型? –

1
DELETE FROM 
    DEMO D1 
WHERE 
    D1.rowid > 
    ANY (
    SELECT 
     D2.rowid 
    FROM 
     DEMO D2 
    WHERE 
     D1.CUST_ID = D2.CUST_ID 
     ); 
1

請嘗試:

SELECT 
    * 
FROM tbl 
WHERE rowid in 
    (SELECT MIN(rowid) 
    FROM tbl 
    GROUP BY DATE_ENQ); 

SQL Fiddle Demo

+1

它不工作....我不想實際刪除記錄,我只是想在顯示時避免重複記錄 – Hitesh

+0

請檢查編輯答案。 – TechDo

0

試試這個 -

select cust_id, min(date_enq) as Datez, COUNT(cust_id) as Custs 
from tbl 
group by cust_id 
0

你會得到輸出,你上面所說的。我檢查了這是工作

SELECT count(CUST_ID), DATE_ENQ FROM Demo GROUP BY DATE_ENQ; 

感謝和問候

+0

它不工作! – Hitesh

+0

@Hitesh:*什麼*不工作?只是說「它不工作!」對任何人都沒有幫助,你應該知道。該聲明完美地解決了您的問題。如果沒有,那麼你的描述是不完整的。您可以通過count(\ *)替換count(CUST_ID),因爲您實際上正在對記錄進行計數,並且您可以使用TRUNC(DATE_ENQ)而不是DATE_ENQ來處理存在不需要的時間部分的情況。 –

+0

你面對什麼確切的問題? – Aniket

0
SELECT COUNT(*) as TotalCustomers,DATE_ENQ 
FROM tableName 
GROUP BY DATE_ENQ 
ORDER BY TotalCustomers 
相關問題