2011-05-20 55 views
10

大家好我有一个'小部件'表,它具有以下列:小部件,操作,时间戳_。我们想要做的是拉出在特定日期之间每天被拒绝的所有小部件。因此,这里是一个示例表Oracle/SQL - 通过一天中的行动对项目进行分组

widget  action  timestamp_ 
------------------------------------------- 
type1  reject  2011-05-10 08:00:00 
type1  reject  2011-05-10 09:00:00 
type1  reject  2011-05-10 09:30:00 
type2  reject  2011-05-11 09:30:00 
type3  reject  2011-05-11 09:30:00 
type1  reject  2011-05-11 09:30:00 
type1  reject  2011-05-11 09:30:00 
type2  reject  2011-05-12 10:30:00 
type2  reject  2011-05-12 12:30:00 
type3  reject  2011-05-12 12:30:00 

所以我期待想看看在这两种方式中的一个结果....

日期X和Y之间有迹象表明是在单日拒绝了多次,两个小部件

这将看到TYPE1被拒绝不止一次在一天因为是TYPE2因此计数为:2

OR

DISPLA每个小部件以及它被拒绝的日期不止一次和多少次。例子..

widget  date   count 
--------------------------------- 
type1  2011-05-10  3 
type1  2011-05-11  2 
type2  2011-05-12  2 

这可能是首选的输出......但如何?

在此先感谢!

回答

9

这将使您的输出:

SELECT Widget, to_char(timestamp_,'YYYY-MM-DD'), Count(Widget) 
FROM Widget 
WHERE timestamp_ BETWEEN to_date('YYYY-MM-DD HH24:MI:SS','%date1%') AND to_date('YYYY-MM-DD HH24:MI:SS','%date2%') 
AND action LIKE 'reject' 
GROUP BY Widget, to_char(timestamp_,'YYYY-MM-DD') 
HAVING Count(Widget) > 1; 

当然,你要更换日期变量。

+0

取代日期变量并收到此错误:“CNT”:无效的标识符 – dscl 2011-05-20 12:15:40

+0

@dscl:对不起,我无法对Oracle数据库进行尝试。请现在试试。 – MPelletier 2011-05-20 12:18:19

+0

不用担心;但是现在我得到了相同的错误,但Date_。 “DATE_”:无效标识符 – dscl 2011-05-20 14:10:33

0

尝试下面的一个,你会得到你想要的东西: -

Select widget,convert(varchar,[timestp],102) As Date,COUNT(timestp) as Count 
    From MTest 
    group by widget,[action],convert(varchar,[timestp],102) 
    having COUNT(timestp)>1 
+0

我在action ='rejected'的where子句中添加了一个,所以我不会收回不需要的结果。我也得到一个错误,虽然:'失踪表达式' – dscl 2011-05-20 12:18:35

+0

你正在尝试在SQL Server或Oracle? – Sanjay 2011-05-20 17:41:49

相关问题