如何在新表中将行分组在一起?

问题描述 投票:0回答:2

我正在尝试将多行分组在一起以形成一个新表。我这样做是为了找到每个客户的每种发票交付方式的数量。

我尝试过此代码

CREATE TABLE new_table AS
SELECT customer_id,
(COUNT(invoice_send_method WHERE invoice_send_method='Fax' GRPUP BY(purchase_date || '_' || item_id))),
(COUNT(invoice_send_method WHERE invoice_send_method='Mail' GRPUP BY(purchase_date || '_' || item_id))),
(COUNT(invoice_send_method WHERE invoice_send_method='Email' GRPUP BY(purchase_date || '_' || item_id)))
FROM my_table;

但是它在invoice_send_method的第一个实例之后(在WHERE之前)返回语法错误。

为了算作发票发送方法的一个实例,我创建了一个规则,该规则必须是purchase_date和item_id的唯一组合。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS84cmNaci5wbmcifQ==” alt =“当前表”>“>

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS8xWjhOMS5wbmcifQ==” alt =“所需表”>

有更好的方法吗?似乎我无法在COUNT内引入WHERE或GROUP BY语句,但是在仍然检查所有发票传送方式的同时,我不知道该怎么办。

我正在使用MySQL Workbench。

我正在尝试将多行分组在一起以形成一个新表。我这样做是为了找到每个客户的每种发票交付方式的数量。我已经尝试过这段代码CREATE TABLE ...

mysql sql sorting
2个回答
0
投票

您可以尝试使用ORDER BY代替GROUP BY:

CREATE TABLE new_table AS
SELECT customer_id, purchase_date, item_id,
COUNT(invoice_send_method WHERE invoice_send_method='Fax') as count_fax, 
COUNT(invoice_send_method WHERE invoice_send_method='Mail') as count_mail,
COUNT(invoice_send_method WHERE invoice_send_method='Email') as count_email,
FROM my_table
ORDER BY purchase_date, item_id;

0
投票

您的查询在语法上是错误的。使用这个:

© www.soinside.com 2019 - 2024. All rights reserved.