[英]SQL - merge two queries with different number of columns in select statement into one
这是两个单独运行时可以按预期运行的SQL查询。 我尝试将它们与UNION
& UNION ALL
合并为一个SQL,但是显然由于每种方法返回的列数不同,所以我无法使用这些技术。
我正在使用的数据在这里
这是我要合并的两个独立查询
查询一
SET group_concat_max_len = 100485760;
SELECT
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NUM_PRODS ORDER BY NUM_PRODS SEPARATOR ','),',', 50/100 * COUNT(*) + 1),',', -1) AS DECIMAL) AS aa
,CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NUM_PRODS ORDER BY NUM_PRODS SEPARATOR ','),',', 75/100 * COUNT(*) + 1),',', -1) AS DECIMAL) AS bb
,CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NUM_PRODS ORDER BY NUM_PRODS SEPARATOR ','),',', 85/100 * COUNT(*) + 1),',', -1) AS DECIMAL) AS cc
,CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NUM_PRODS ORDER BY NUM_PRODS SEPARATOR ','),',', 95/100 * COUNT(*) + 1),',', -1) AS DECIMAL) AS dd
,MAX(NUM_PRODS) AS MAAX
FROM
SALES_INFO
查询二
SET group_concat_max_len = 100485760;
SELECT
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NUM_PRODS ORDER BY NUM_PRODS SEPARATOR ','),',', 75/100 * COUNT(*) + 1),',', -1) AS DECIMAL) AS ee
FROM
SALES_INFO
WHERE
SALE_DATE >= DATE_SUB(curdate(), INTERVAL 2 WEEK)
我可以请求帮助将这两个查询合并为一个吗?
您可以在选择中使用子查询,如下所示:
SELECT CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NUM_PRODS ORDER BY NUM_PRODS SEPARATOR ','),',', 50/100 * COUNT(*) + 1),',', -1) AS DECIMAL) AS 50per
,CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NUM_PRODS ORDER BY NUM_PRODS SEPARATOR ','),',', 75/100 * COUNT(*) + 1),',', -1) AS DECIMAL) AS 75per
,CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NUM_PRODS ORDER BY NUM_PRODS SEPARATOR ','),',', 85/100 * COUNT(*) + 1),',', -1) AS DECIMAL) AS 85per
,CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NUM_PRODS ORDER BY NUM_PRODS SEPARATOR ','),',', 95/100 * COUNT(*) + 1),',', -1) AS DECIMAL) AS 95per
,MAX(NUM_PRODS) AS MAAX
,(SELECT CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NUM_PRODS ORDER BY NUM_PRODS SEPARATOR ','),',', 75/100 * COUNT(*) + 1),',', -1) AS DECIMAL) AS 2weeks
FROM SALES_INFO
WHERE SALE_DATE >= DATE_SUB(curdate(), INTERVAL 2 WEEK)
ORDER BY 2weeks limit 1) as 2weeks
FROM
SALES_INFO
您没有指定这两个查询之间的关系,也没有指定它们的数据结构,因此,对于第一个结果,目前它是有限的,如果那不是您需要的,请更新您的要求,然后我将更新答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.