Существует два способа доступа к свойствам объекта:
something.bar
something['bar']
Значение между скобками может быть любым выражением. Поэтому, если имя свойства хранится в переменной, вы должны использовать нотацию в виде скобок:
var foo = 'bar';
something[foo];
// both x = something[foo] and something[foo] = x work as expected
Представления - это выбор операторов, не более того. Представления не могут быть несколькими операторами. Если вы не можете получить это представление до одного оператора, попробуйте здесь здесь использовать функцию или процедуру.
Попробуйте это предложение для 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 '#'
#1351 - View's SELECT contains a variable or parameter
– John Guan 27 September 2013 в 22:35