2014-04-28 140 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 
相关问题