MySQL - SQL语句有效,但无法创建VIEW

时间:2018-01-02 11:37:18

标签: mysql sql mysql-workbench

当我在Workbench中运行此SQL时,它会生成所需的输出:https://www.dropbox.com/s/4ofodxtwslz228i/Screenshot%202018-01-02%2003.34.25.png?dl=0

但是,当我尝试创建视图时,会出现以下错误: 未知列'LEAD(latest_20session_date)OVER(PAR latest_20level ORDER BY latest_20session_date DESC, level ASC)'在'字段列表'

我做错了什么?

SELECT
*, 
CONCAT(
    `lead_table`.`Session_Count`, ', ',
    DATE_FORMAT(`lead_table`.`Session_Date`, '%c/%e/%Y'), ', ',
    DATE_FORMAT(`lead_table`.`Session_Date`, '%l:%i %p'), ', ',
    if(Timestampdiff(DAY, `lead_table`.`lead`, `lead_table`.`Session_Date`) is null, 'na', Timestampdiff(DAY, `lead_table`.`lead`, `lead_table`.`Session_Date`)), ', ',
    if(Mod(Timestampdiff(hour, `lead_table`.`lead`, `lead_table`.`Session_Date`), 24) is null, 'na', Mod(Timestampdiff(hour, `lead_table`.`lead`, `lead_table`.`Session_Date`), 24)), ', ',
    if(Mod(Timestampdiff(MINUTE, `lead_table`.`lead`, `lead_table`.`Session_Date`), 60) is null, 'na', Mod(Timestampdiff(MINUTE, `lead_table`.`lead`, `lead_table`.`Session_Date`), 60))
) AS comb_label

FROM
(
  SELECT
     *,
     LEAD(`latest_20`.`session_date`) OVER (PARTITION BY `latest_20`.`level` ORDER BY `latest_20`.`session_date` DESC, `level` ASC) AS lead,
     Dayname(Lead(`latest_20`.`session_date`) OVER (PARTITION BY `latest_20`.`level` ORDER BY `latest_20`.`session_date` DESC, `level` ASC)) AS lead_day 
  FROM
     (
        SELECT
           * 
        FROM
           view_performance_accuracy_pct 
        WHERE
           user_id = 1 AND `level` = 'Basic' 
        ORDER BY
           session_date DESC,
           `level` ASC LIMIT 20
    ) AS latest_20 
  ORDER BY latest_20.session_date ASC
) AS lead_table

1 个答案:

答案 0 :(得分:0)

请单独指定所有列名,而不是“SELECT *”。 例如

  

SELECT col1,col2,... FROM