2011-12-14 82 views
0

结合数据是否有办法让我得到一个不同的名称,那么在今天,明天的数量,这些查询组合,和后天的MySQL从三个查询

select name, SUM(qty) as qty_today, 0 as qty_tomororow, 0 as qty_om 
from order_item 
where delivery_date = '2011-11-22' 
group by name 
union all 
select name, qty as qty_today, SUM(qty) as qty_tomororow, 0 as qty_om 
from order_item 
where delivery_date = '2011-11-23' 
group by name 
union all 
select name, 0 as qty_today, 0 as qty_tomororow, SUM(qty) as qty_om 
from order_item 
where delivery_date = '2011-11-24' 
group by name 

UPDATE
鉴于表
名称,数量,DELIVERY_DATE
芝加哥,1,2011-11-22
纽约,2,2011-11-22
芝加哥,3,2011-11-23

我希望
芝加哥,1,3,0
纽约,1,0,0

回答

1

如果你是试图将它们全部结合在一个数据集中,您可以试试这个,

SELECT name, 
     SUM(CASE WHEN delivery_date = '2011-11-22' THEN qty 
       ELSE 0 END) AS qty_today, 
     SUM(CASE WHEN delivery_date = '2011-11-23' THEN qty 
       ELSE 0 END) AS qty_tomororow, 
     SUM(CASE WHEN delivery_date = '2011-11-24' THEN qty 
       ELSE 0 END) AS qty_om 
from order_item 
where delivery_date between '2011-11-22' and '2011-11-24' 
group by name 

这将在TSQL(MS SQL)的工作,希望它在MySQL的

0

UNION/UNION ALL将这样的伎俩:

select name, SUM(qty) as qty_today, 0 as qty_tomororow, 0 as qty_om 
from order_item 
where delivery_date = '2011-11-22' 
group by name 
UNION ALL 
select name, qty as qty_today, SUM(qty) as qty_tomororow, 0 as qty_om 
from order_item 
where delivery_date = '2011-11-23' 
group by name 
UNION ALL 
select name, 0 as qty_today, 0 as qty_tomororow, SUM(qty) as qty_om 
from order_item 
where delivery_date = '2011-11-24' 
group by name 
+0

这就是说,看起来你应该`GROUP BY DELIVERY_DATE,name`代替。 – Kenaniah 2011-12-14 20:26:04

1
select name, SUM(qty) as qty_today, 0 as qty_tomororow, 0 as qty_om 
from order_item 
where delivery_date IN ('2011-11-22', '2011-11-23', '2011-11-24') 
group by delivery_date, name 
0
SELECT name, 
     SUM(if (delivery_date = '2011-11-22' , qty , 0)) AS qty_today, 
     SUM(if (delivery_date = '2011-11-23' , qty , 0)) AS qty_tomororow, 
     SUM(if (delivery_date = '2011-11-24' , qty , 0)) AS qty_om 
from order_item group by name 

相同的语法,这是MySQL的更多风格