试试这个:
SELECT captain_name,
Sum(finaldiscount) AS tot,
payment_mode
FROM order_master
WHERE payment_mode IN('cash', 'card')
AND captain_name IN (SELECT captain_name
FROM order_master
WHERE payment_mode IN('cash', 'card')
GROUP BY captain_name
HAVING Count(DISTINCT payment_mode) = 2)
GROUP BY captain_name,payment_mode
子查询将返回唯一的日其中有payment_mode
,即card
和cash
。然后选择captain_name
和group by
那些行,按captain_name,payment_mode
。
,如果你不想单独的行为card
和cash
然后使用此:
SELECT captain_name,SUM(finaldiscount)
FROM order_master
WHERE payment_mode IN('cash', 'card')
GROUP BY captain_name
HAVING Count(DISTINCT payment_mode) = 2
注:我认为two captain should be equal
意味着只有那些被两个查询返回的队长,应当由合并返回查询。
为什么要组合相同的查询?我没有看到查询之间的区别。 – 2014-12-05 10:02:12
这两个查询看起来都是一样的 – 2014-12-05 10:02:30
它被错误地编辑了,在第一个查询中有'payment_mode ='card''。 – 2014-12-05 10:04:02