Mysql根据不同的月份条件查询求和列
我有一个包含以下字段的表 Suf|U id |类别|子类别|收集|供应商|销售数量|销售|月|年 我想在单个mysql查询中,根据所选的年份持续时间,对过去1个月、过去3个月和过去12个月的quantity_Saled和sales列求和 我尝试了以下查询Mysql根据不同的月份条件查询求和列,mysql,Mysql,我有一个包含以下字段的表 Suf|U id |类别|子类别|收集|供应商|销售数量|销售|月|年 我想在单个mysql查询中,根据所选的年份持续时间,对过去1个月、过去3个月和过去12个月的quantity_Saled和sales列求和 我尝试了以下查询 SELECT `category`, `subcategory`, `collection`, `vendor_id`, (SELECT SUM(quantity_sold) FROM `sales_upload_file
SELECT `category`, `subcategory`, `collection`, `vendor_id`,
(SELECT SUM(quantity_sold)
FROM `sales_upload_file` as s2
where file_month = 5
and file_year = 2017
and s2.`category` = s1.category
and s2.`subcategory` = s1.subcategory
and s2.`collection` = s1.collection
and s2. `vendor_id` = s1.vendor_id) as month_1_sold,
(SELECT SUM(sales)
FROM `sales_upload_file` as s2
where file_month = 5
and file_year = 2017
and s2.`category` = s1.category
and s2.`subcategory` = s1.subcategory
and s2.`collection` = s1.collection
and s2. `vendor_id` = s1.vendor_id) as month_1_sale,
(SELECT SUM(quantity_sold)
FROM `sales_upload_file` as s2
where file_month <= 5
and file_month >= 3
and file_year = 2017
and s2.`category` = s1.category
and s2.`subcategory` = s1.subcategory
and s2.`collection` = s1.collection
and s2. `vendor_id` = s1.vendor_id) as month_3_sold,
(SELECT SUM(sales)
FROM `sales_upload_file` as s2
where file_month <= 5
and file_month >= 3
and file_year = 2017
and s2.`category` = s1.category
and s2.`subcategory` = s1.subcategory
and s2.`collection` = s1.collection
and s2. `vendor_id` = s1.vendor_id) as month_3_sale,
(SELECT SUM(quantity_sold)
FROM `sales_upload_file` as s2
where file_month <= 5
and file_month >= 1
and file_year = 2017
and s2.`category` = s1.category
and s2.`subcategory` = s1.subcategory
and s2.`collection` = s1.collection
and s2. `vendor_id` = s1.vendor_id
UNION
SELECT SUM(quantity_sold)
FROM `sales_upload_file` as s2
where file_month >= 6
and file_month <= 12
and file_year = 2016
and s2.`category` = s1.category
and s2.`subcategory` = s1.subcategory
and s2.`collection` = s1.collection
and s2. `vendor_id` = s1.vendor_id) as month_12_sold,
(SELECT SUM(sales)
FROM `sales_upload_file` as s2
where file_month <= 5
and file_month >= 1
and file_year = 2017
and s2.`category` = s1.category
and s2.`subcategory` = s1.subcategory
and s2.`collection` = s1.collection
and s2. `vendor_id` = s1.vendor_id
UNION
SELECT SUM(sales)
FROM `sales_upload_file` as s2
where file_month >= 6
and file_month <= 12
and file_year = 2016
and s2.`category` = s1.category
and s2.`subcategory` = s1.subcategory
and s2.`collection` = s1.collection
and s2. `vendor_id` = s1.vendor_id) as month_12_sale
FROM `sales_upload_file` as `s1`
WHERE `processed` = '1'
AND `pc` = '1' GROUP BY `category`, `subcategory`, `collection`, `vendor_id` ORDER BY `category`, `subcategory`, `collection`, `vendor_id`
我收到一个错误子查询返回超过1行
非常感谢您的帮助。我想您可以这样更改查询,因为您没有发布创建脚本和示例数据,所以我无法进行任何测试:请发布它们以获得更多帮助:
SELECT s1.category
,s1.subcategory
,s1.COLLECTION
,s1.vendor_id
, SUM(s2.quantity_sold) AS month_1_sold
, SUM(s2.sales) AS month_1_sale
, SUM(s3.quantity_sold) AS month_3_sold
, SUM(s3.sales) AS month_3_sale
, SUM(s4.quantity_sold) AS month_12_sold
, SUM(s4.sales) AS month_12_sale
FROM sales_upload_file s1
LEFT JOIN sales_upload_file s2 ON s2.category = s1.category
AND s2.subcategory = s1.subcategory
AND s2.COLLECTION = s1.COLLECTION
AND s2.vendor_id = s1.vendor_id
AND s2.file_year = 2017 AND s2.file_month = 5
LEFT JOIN sales_upload_file s3 ON s3.category = s1.category
AND s3.subcategory = s1.subcategory
AND s3.COLLECTION = s1.COLLECTION
AND s3.vendor_id = s1.vendor_id
AND s3.file_year = 2017 AND s3.file_month >= 3 AND s3.file_month<=5
LEFT JOIN sales_upload_file s4 ON s4.category = s1.category
AND s4.subcategory = s1.subcategory
AND s4.COLLECTION = s1.COLLECTION
AND s4.vendor_id = s1.vendor_id
AND ((s4.file_year = 2017 AND s4.file_month >= 1 AND s4.file_month<=5) OR (s4.file_year = 2016 AND s4.file_month >= 6 AND s4.file_month<=12))
WHERE s1.processed = '1'
AND s1.pc = '1'
GROUP BY s1.category
,s1.subcategory
,s1.COLLECTION
,s1.vendor_id
ORDER BY s1.category
,s1.subcategory
,s1.COLLECTION
,s1.vendor_id
我已经更新了我的帖子。请刷新以查看我尝试过的内容。抱歉,我们问了。看,我将坐在这里,直到等待编辑被审查,所以我重新格式化这个查询!我有一种理解这个世界的自然欲望。