[英]how do i pull mysql data with case statements into separate columns
我的表如下:
销售:客户编号,发票,销售日期,金额
日记帐:参考,日期,类型,金额
客户:customerid,customername
我需要从该表中提取数据并以以下格式显示:
customer name | jan sales| feb sales| march sales| april sales|
等等
我正在尝试以下查询:
SELECT
customers.customername AS customer_name,
CASE WHEN EXTRACT(MONTH FROM journal.date) = 1 THEN SUM(journal.amount) AS january_sales ELSE 0 END,
CASE WHEN EXTRACT(MONTH FROM journal.date) = 1 THEN SUM(journal.amount) AS feb_sales ELSE 0 END,
CASE WHEN EXTRACT(MONTH FROM journal.date) = 1 THEN SUM(journal.amount) AS march_sales ELSE 0 END
FROM customers
JOIN sales ON sales.customerid = customers.customerid
JOIN journal ON journal.reference = sales.invoice
WHERE
journal.type = 'sale' AND
journal.date BETWEEN '2013-01-01' AND '2013-03-31' GROUP BY
customers.customername
我无法使该查询正常工作。 任何帮助表示赞赏。
在SUM
使用CASE
SELECT
customers.customername AS customer_name,
SUM(
CASE
WHEN EXTRACT(MONTH FROM journal.date) = 1
THEN journal.amount
ELSE 0
END
) AS january_sales,
SUM(
CASE
WHEN EXTRACT(MONTH FROM journal.date) = 1
THEN journal.amount
ELSE 0
END
) AS feb_sales,
SUM(
CASE
WHEN EXTRACT(MONTH FROM journal.date) = 1
THEN journal.amount
ELSE 0
END
) AS march_sales
FROM
customers
JOIN sales
ON sales.customerid = customers.customerid
JOIN journal
ON journal.reference = sales.invoice
WHERE journal.type = 'sale'
AND journal.date BETWEEN '2013-01-01'
AND '2013-03-31'
GROUP BY customers.customername
我认为这是您想要的:
SELECT c.customername AS customer_name,
sum(CASE WHEN month(j.date) = 1 THEN j.amount end) AS january_sales,
sum(CASE WHEN month(j.date) = 2 THEN j.amount end) AS feb_sales,
sum(CASE WHEN month(j.date) = 3 THEN j.amount end) AS march_sales
FROM customers c JOIN
sales s
ON s.customerid = c.customerid JOIN
journal j
ON j.reference = s.invoice
WHERE
j.type = 'sale' AND
j.date BETWEEN '2013-01-01' AND '2013-03-31'
GROUP BY c.customername;
您的case
陈述书被弄糟了。 例如,它在语句内部而不是后面具有列别名。 我进行了其他一些更改。 我认为month()
比extract(month)
容易extract(month)
一种观点,因为后者是ANSI标准)。 我还添加了表别名,以使查询更易于阅读。
请注意,如果查询范围超过12个月,则可能应查看年份值和月份。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.