Получение этого SQL-выражения правильно с псевдонимами - PullRequest
0 голосов
/ 18 августа 2011

Что я в основном хочу сделать: вычислить разницу между атрибутами и затем получить строку с наибольшей разницей.

Итак, вот что я попробовал:

SELECT caller_aor, (end_time - start_time) as duration
    FROM cdrs
    GROUP BY caller_aor
    HAVING duration = (SELECT MAX(end_time - start_time) FROM cdrs);

длительность в предложении HAVING выдает ошибку, но я не могу понять, что мне там делать.

Помощь приветствуется.

Ответы [ 3 ]

3 голосов
/ 18 августа 2011

Вы не хотите GROUP BY и HAVING (они используются только тогда, когда агрегирует столбцы).

Вы хотите простой WHERE:

SELECT caller_aor, (end_time - start_time) as duration
FROM cdrs
WHERE (end_time - start_time) = (SELECT MAX(end_time - start_time) FROM cdrs);
2 голосов
/ 18 августа 2011

попробуйте этот запрос

SELECT top 1 caller_aor, Max(end_time - start_time) as duration
FROM cdrs
GROUP BY caller_aor
Order by duration
1 голос
/ 18 августа 2011

Еще один способ взглянуть на это - использовать limit.

SELECT caller_aor, (end_time-start_time) AS duration
FROM cdrs
ORDER BY duration DESC
LIMIT 1
...