簡體   English   中英

UNION ALL 子查詢與 JOIN 生成語法錯誤

[英]UNION ALL subquery with JOIN generating syntax error

我正在嘗試從 3 個表中獲取數據,然后加入該結果集,如下所示:

SELECT     r.region, 
           r.recordtype,
           i.entity,
           COUNT(i.requestid) AS responses 
FROM       ( 
                  SELECT region, 
                         recordtype,
                         entity, 
                         requestid 
                  FROM   ( 
                                SELECT region, 
                                       'a' AS recordtype,
                                       requestid 
                                FROM   db.table1 
                                UNION ALL 
                                SELECT region, 
                                       'b' AS recordtype,
                                       requestid 
                                FROM   db.table2
                                UNION ALL 
                                SELECT region, 
                                       'c' AS recordtype,
                                       requestid 
                                FROM   db.table3 
                         ) union_results
           ) r 
RIGHT JOIN db.responses i 
ON         r.requestid = i.requestid 
GROUP BY   r.recordtype, 
           r.region,
           i.entity

我最終要尋找的是 i.requestid 在其他三個表的聯合結果中的行的結果,然后如圖所示分組,雖然我什至不確定我是否正確使用了 RIGHT JOIN 我得到基本查詢錯誤。

要求表1(a)

requestid  region
abcdef  us
bcdefg  eu
cdefgh  eu

要求 表2(b)

requestid  region
fghijk  eu
rstuwx  eu
jklmno  eu

要求 表 3(c)

requestid  region
klmnop  eu
ghijkl  eu
opqrst  eu

回應

requestid  entity
abcdef  1
rstuwx  3
ghijkl  5
opqrst  5

結果

region  entity  recordtype  count(responses)
us  1  a  1
eu  3  b  1
eu  5  c  2

我成功地將聯合本身用作子查詢,但是當與連接配對時,我收到以下錯誤,所以我正在尋找關於我做錯了什么的指針,我現在已經失明了。 我正在使用中間表,因為最終計划是根據擴展數據在此處創建一些動態列(樣本僅代表我將在查詢工作后最終提取的一些列)。

失敗:ParseException 第 4 行:6 無法識別 joinSource 命令中 '(' 'SELECT' 'region' 附近的輸入,以 ret '64' 退出

謝謝!

這個查詢對我有用:

SELECT r.region, r.recordtype, entity, Count(responses.requestid) AS responses FROM
(SELECT region, "a" AS recordtype, requestid FROM Table1
 UNION ALL SELECT region, "b", requestid FROM Table2
 UNION ALL SELECT region, "c", requestid FROM Table3) AS r
RIGHT JOIN responses ON r.requestid=responses.requestid
GROUP BY recordtype, region, entity;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM