,可以帮助的第一件事是正确的SQL的格式化:
SELECT
(CASE
WHEN pickedup = '1' THEN DATE(pickeduptime)
ELSE DATE(ordertime)
END) AS x,
COUNT(productid) AS y,
SUM(CASE
WHEN pickedup = '1' THEN 1
ELSE 0
END) AS z
FROM
order_detail
WHERE
productid = '127' AND
YEAR(ordertime) = YEAR(NOW())
GROUP BY x
ORDER BY x ASC
现在我需要找出你正在尝试做什么。这是真正的问题开始的地方。目前还不清楚你是否重复使用表格中的行来获取皮卡。对不起,我帮不了你。你的SQL虽然很奇怪。对于这样简单的事情,您不需要使用两个CASE
命令。
我也无法理解你的SQL,按照来自两列的日期分组吗?
经过仔细阅读,我想我开始明白你想要什么。你想知道每个日期有多少产品被订购和取货。我不会试图用一个SQL命令来做到这一点,而是使用两个。两行,两条SQL命令。 :-)
首先简单:有多少种产品,其中有序,分组和按日期排序:
SELECT
DATE(ordertime) as orderdate,
COUNT(productid) AS quantity
FROM
order_detail
WHERE
productid = '127' AND
YEAR(ordertime) = YEAR(NOW())
GROUP BY orderdate
ORDER BY orderdate ASC
现在还没有拿起订购的产品:
SELECT
DATE(ordertime) as orderdate,
COUNT(productid) AS quantity
FROM
order_detail
WHERE
productid = '127' AND
YEAR(ordertime) = YEAR(NOW()) AND
pickedup != '1'
GROUP BY orderdate
ORDER BY orderdate ASC
和现在已经拿起产品,还是上排序订单日期:
SELECT
DATE(ordertime) as orderdate,
COUNT(productid) AS quantity
FROM
order_detail
WHERE
productid = '127' AND
YEAR(ordertime) = YEAR(NOW()) AND
pickedup = '1'
GROUP BY orderdate
ORDER BY orderdate ASC
而这里的同排序日期:
SELECT
DATE(pickeduptime) as pickedupdate,
COUNT(productid) AS quantity
FROM
order_detail
WHERE
productid = '127' AND
YEAR(ordertime) = YEAR(NOW()) AND
pickedup = '1'
GROUP BY pickedupdate
ORDER BY pickedupdate ASC
现在,您可以使用其中任何一种方法在图表中绘制一条线。
如果你坚持一个查询,你可以用这一个:
SELECT
DATE(ordertime) as orderdate,
SUM(pickedup) AS pickedup_quantity,
SUM(1-pickedup) AS not_pickedup_quantity
FROM
order_detail
WHERE
productid = '127' AND
YEAR(ordertime) = YEAR(NOW())
GROUP BY orderdate
ORDER BY orderdate ASC
注意,一切必须由一个日期排序。
请显示您的表格,colums的含义,并告诉我们您要制作的图表。 – 2014-10-20 09:40:23