2014-06-14 52 views
1

我有两个表...SQL GROUP BY和骨料需要帮助

  • 订单(订单编号,orderDate存储,发货日期,requiredDate,状态customerNumber之)和
  • 订单明细(订单编号,产品代码,quantityOrdered,priceEach ,orderLineNumber)

我试图返回这样的查询...

+----------------------------------+--------------------+ 
| DATEDIFF(shippedDate, orderDate) | COUNT(shippedDate) | 
+----------------------------------+--------------------+ 
|        1 |     50 | 
|        2 |     49 | 
|        3 |     52 | 
|        4 |     52 | 
|        5 |     59 | 
|        6 |     45 | 
|        7 |     2 | 
|        8 |     2 | 
|        65 |     1 | 
+----------------------------------+--------------------+ 

但我只是没有得到它。我知道我必须做1组,并使用则DateDiff()和COUNT()...

我已经试过这一点,但它不是正确的 的mysql:

select DATEDIFF(shippedDate,orderDate), COUNT(shippedDate) from Orders Group by shippedDate; 

有什么建议?

+0

删除了SQL Server的标记,因为问题明确地说: “MySQL的” 组添加DATEDIFF(发货日期,orderDate存储) 。 –

回答

1

您需要group bydatediff()

select DATEDIFF(shippedDate, orderDate), COUNT(shippedDate) 
from Orders 
Group by DATEDIFF(shippedDate, orderDate); 
+0

谢谢!如果我想删除NULL值,该怎么办? – CoderRightInTheProgram

+0

@ dognose。 。 。 (1)SQL标签通常与其他数据库结合使用。其目的似乎是为了扩大观众。 (2)这在SQL Server中不起作用,因为'datediff()'在SQL Server中有三个参数。 (3)我不确定你在说什么。对于'datediff()'的第三个参数,这将在SQL Server中起作用。 –

+0

@ user3740517。 。 。你可以添加'where shippedDate不为null并且orderDate不为空'或者可能用'coalesce()'用'now()'替换NULL值。 –

1

您需要通过声明,而不是发货日期