2011-08-23 96 views
1

在尝试生产票的状态随着时间的看法,我碰到的几个挑战:按月查询分组状态的SQL查询。修正系统

背景:

含票记录的数据库设置为允许基本的重新远景规划,并包括以下各列(这是我认为相关):

ID - - 状态 - DATE_CREATED - 修改

期望解:

包含以下内容的表格:按周/月/年分组的每个状态的计数。

挑战:

排除状态未发生变化的任何修订。提前的任何援助

谢谢,这是白热化我的大脑:)

+1

感谢这么多的帮助!这是似乎已经工作的解决方案: 'SELECT COUNT(t1.status),month(t1.date_modified),year(t1.date_modified),week(t1.date_modified),t1.status FROM trends as t1 JOIN趋势为t2 ON(t1.original = t2.ID) WHERE t1.status!= t2.status GROUP BY MONTH(date_modified),status;' – Slukehart

回答

3

应该是这样的(不分组按日期):

SELECT t1.* 
FROM table as t1 
JOIN table as t2 ON (t1.original = t2.ID) 
WHERE t1.status != t2.status; 
+1

我没有足够的声望投票,但我希望我做:)感谢您的时间! – Slukehart

0

EXISTS/NOT EXISTS的子查询应该是你在找什么。

+1

只是为了帮助我理解该函数如何应用于此问题你提供更多的细节? (不时间敏感:) – Slukehart

+0

我想我误解了你的问题:) 基本上 - 'EXISTS()'是一个函数用在'WHERE'子句中,将子查询(SELECT ...)作为参数并返回TRUE返回任何行。在简单情况下,它的执行速度与进行类似工作的连接速度相同(并且可以更易读且更易于编写),有时会更慢。 – Crack