以下是兩個單獨運行時按預期工作的SQL查詢。我已經試過把它們揉成一個SQL,但是顯然是由於每一個返回的列數不同,所以我不能使用這些技術。SQL - 在select語句中將具有不同列數的兩個查詢合併爲一個
我使用的數據是here
這裏是我試圖合併
查詢一個
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)
我可以請求幫助將這兩個查詢合併爲一個嗎?
您需要確定每個記錄集獨有的列。在聯合部分中,將每個表或記錄集中可用的列的空值或默認值指定爲公用表表達式。你現在可以像你喜歡的那樣查詢CTE。如果你不知道,你可以閱讀關於 CTE。 SQL服務器中一個非常有用的工具。你也可以將它等同於mysql。 – Ammog
其他地方並沒有那麼有用 – Strawberry
您可以添加NULL作爲佔位符 – Strawberry