0

我正在尝试按月获取数据。

SELECT 
    c.Calendar_Month_Name, COUNT(*)
FROM
   db1 AS c
        INNER JOIN
    (SELECT DISTINCT
        a.tel_num, b.postpaid_tel_num
    FROM
        db2 AS a
    INNER JOIN db3 AS b ON a.tel_num = b.tel_num
    WHERE
        a.hs_manufacturer = 'Samsung'
            AND b.postpaid_tel_num = 1) d ON c.Dim_Calendar_Dt = d.REPORT_DT
WHERE
    c.Calendar_Year_Num = 2018
GROUP BY c.Calendar_Month_Name;

REPORT_DT 存在于 db2 中,但我仍然收到一条错误消息,提示 REPORT_DT 不存在

如果我按如下方式更改括号的位置,我会收到一条错误消息,提示“REPORT_DT”和“where”关键字之间应该有一些东西。

SELECT 
    c.Calendar_Month_Name, COUNT(*)
FROM
    (db1 AS c
    INNER JOIN (SELECT DISTINCT
        a.tel_num, b.postpaid_tel_num
    FROM
        db2 AS a
    INNER JOIN db3 AS b ON a.tel_num = b.tel_num
    WHERE
        a.hs_manufacturer = 'Samsung'
            AND b.postpaid_tel_num = 1) d ON c.Dim_Calendar_Dt = d.REPORT_DT
WHERE
    c.Calendar_Year_Num = 2018)
GROUP BY c.Calendar_Month_Name;
4

2 回答 2

1

在第一个版本中,您似乎需要将REPORT_DT添加到子查询d的select子句中

于 2018-03-19T20:28:11.590 回答
0

FWIW,我认为格式化的查询应该是这样的:

SELECT c.Calendar_Month_Name
     , COUNT(*) 
  FROM db1 c
  JOIN 
     ( SELECT DISTINCT a.tel_num
            , b.postpaid_tel_num 
         FROM db2 a
         JOIN db3 b 
           ON a.tel_num = b.tel_num
        WHERE a.hs_manufacturer = 'Samsung'         
          AND b.postpaid_tel_num=1
     ) d
    ON c.Dim_Calendar_Dt = d.REPORT_DT
 WHERE c.Calendar_Year_Num = 2018
 GROUP 
    BY c.Calendar_Month_Name
于 2018-03-19T23:47:32.457 回答