2013-04-28 80 views
-4

可以说我有这样的表。表名:日志SQL相关字段和副本

id time prod stan amt 
1 02:01 10  445 22 
2 05:33 02  446 56 
3 02:02 10  447 22 
4 20:40 55  448 88 

我想输出

id time prod stan amt 
1 02:01 10  445 22 
3 02:02 10  447 22 

这是我AVE试图

SELECT time, prod, stan, amt 
FROM Logs 
GROUP BY time, prod, stan, amt 
HAVING (COUNT(prod) > 1 AND COUNT(amt) > 1) 

这里相同的值将是督促和AMT。我希望所有的记录,因为斯坦是不同 复制不起作用 任何人都可以使用SQL查询

+4

您是否尝试过任何一种功能?当你有问题时,我们会帮助你,而不是当你有需求时。 =) – 2013-04-28 11:41:26

+2

另外,目前还不清楚获得该输出的标准是什么。 – 2013-04-28 11:42:34

+0

他可以尝试使用'SELECT * FROM日志WHERE AMT = 22' – rekire 2013-04-28 11:44:32

回答

0

帮助试试这个SQL statment:

SELECT * FROM Logs l JOIN (
    SELECT prod, amt 
    FROM Logs 
    WHERE time between '02:00' and '06:00' 
    GROUP BY prod, amt 
    HAVING count(*)>1 
) tmp 
ON tmp.prod=l.prod AND tmp.amt=l.amt 
WHERE time between '02:00' and '06:00' 

我增加了一些更多的行检查是否有不相关的行将被添加。

另请参阅此演示:http://sqlfiddle.com/#!2/ca583/2/0

+0

多数民众赞成好。我可以限制它的时间像02:00至06:00 这是行不通的 选择*从日志 其中'02:00'和'06:00'之间的时间l JOIN( SELECT prod,amt (*)> 1)tmp ON tmp.prod = l.prod AND tmp.amt = l.amt – chaos 2013-04-28 13:00:06

+0

好的。我会更新我的答案。 – rekire 2013-04-28 13:04:11

+0

我想我明白了..它应该在最后,对吧? 好的。我会检查你的! – chaos 2013-04-28 13:22:18