【发布时间】:2010-11-26 00:11:08
【问题描述】:
我想得到这样的东西:
*Customer *2009 *2010 *
|------------|---------|--------|
|Peter |120 |240 |
|Johe |455 |550 |
我的第一个查询方法是:
Select c.name, sum(o2009.price), sum(o2010.price) from customer c
join orders o2009 on (o2009.customerId = c.id AND o2009.year = 2009)
join orders o2010 on (o2010.customerId = c.id AND o2010.year = 2010)
group by c.id
很遗憾,这是完全错误的。我想我可以运行 2 个查询然后建立一个联合,但也许有更简单的方法?
【问题讨论】:
-
我们必须猜测您的表结构,这绝不是好事。但是每年一张桌子对我来说似乎是一个概念错误。
-
这不是一年一张桌子,他只是在做命名。
-
@lijie : 我一定累了,对不起,我的错。
-
嗯,好像mysql没有pivot——在sql server中,使用pivot关键字轻而易举!
-
Pivot 会很好,是的。很抱歉没有提供表结构,它只是一个基本的订单和客户表。