Ошибка MySQL в представлении # 1351: SELECT View содержит переменную или параметр [duplicate]

Существует два способа доступа к свойствам объекта:

  • Точечная нотация: something.bar
  • Обозначение скобок: something['bar']

Значение между скобками может быть любым выражением. Поэтому, если имя свойства хранится в переменной, вы должны использовать нотацию в виде скобок:

var foo = 'bar';
something[foo];
// both x = something[foo] and something[foo] = x work as expected
5
задан John Guan 26 September 2013 в 18:49
поделиться

2 ответа

Представления - это выбор операторов, не более того. Представления не могут быть несколькими операторами. Если вы не можете получить это представление до одного оператора, попробуйте здесь здесь использовать функцию или процедуру.

Попробуйте это предложение для MYSQL с использованием объединения вместо набора.

JOIN    (SELECT @rank:= 0) r;

Вот пример непроверенного, я не уверен, что вы можете заказать по '#' в конце, но если вы можете, он будет сортировать все правильно по рангу:

CREATE VIEW S1_Bottom_Performer_AHT as (
SELECT @rank := @rank+1 AS '#', *
FROM
(SELECT         ei.SM,
                ei.TM,
                es.Month_Date,
                ei.emp_id,
                ei.DNAME,
                ei.STATUS,
                ei.SHIFT,
                ei.SKILL,
                ei.HIRE_DATE,
                ifnull(TIMESTAMPDIFF(MONTH, ei.HIRE_DATE, now()), '-') AS Tenure,
                ifnull(es.Call_Handled, '-') AS Call_Handled,
                ifnull(es.AHT, '-') AS AHT
FROM mtl_extended_info ei
LEFT OUTER JOIN
  ( SELECT es.Employee_ID,
           es.Month_Date,
           sum(es.Calls_Handled_Ct) AS Call_Handled,
           round((sum(es.I_Talk_Time_Sec) + sum(es.Hold_Time_Sec) + sum(es.I_Work_Time_Sec) + sum(es.I_AUX_Out_Time_Sec)) / sum(es.Calls_Handled_Ct)) AS AHT
   FROM cdl_agent_call_voume_gen es
   WHERE es.Month_Date = '2013-09-01'
   GROUP BY es.Employee_ID,
            es.Month_Date ) es ON es.Employee_ID = ei.emp_id
WHERE es.Month_Date = '2013-09-01'
  AND ei.Visible = 1
  AND ei.SKILL != 'RSD'
GROUP BY ei.emp_id
ORDER BY es.AHT DESC LIMIT 80)
) AS RESULTS
JOIN    (SELECT @rank:= 0) r; 
ORDER BY '#'
5
ответ дан Community 21 August 2018 в 11:06
поделиться
6
ответ дан Rahul Tripathi 21 August 2018 в 11:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: