Именование столбцов в SQL с AS с использованием агрегатных функций - PullRequest
0 голосов
/ 09 декабря 2018

Итак, это мой первоначальный запрос, который работал:

DECLARE @total AS FLOAT;
SET @total =(SELECT COUNT(*) FROM Crimes)

SELECT
    Areas.Area,
    Areas.AreaName,
    COUNT(*) AS Total, 
    Round(CONVERT(float,(COUNT(*) / @total) * 100),3)
FROM Areas
INNER JOIN Crimes
    ON(Areas.Area = Crimes.Area)
GROUP BY
    Areas.AreaName,
    Areas.Area

, и единственное изменение, которое я сделал, было переименование агрегатной функции в «Процент», и там говорится, что есть проблема с двумя столбцами Area иAreaName, что они не могут быть связаны, и я не уверен, почему.

Новое изменение:

DECLARE @total AS FLOAT;
SET @total =(SELECT COUNT(*) FROM Crimes)
SELECT
    Areas.Area,
    Areas.AreaName,
    COUNT(*) AS Total,
    Round(CONVERT(float,(COUNT(*) / @total) * 100),3) AS Percent
FROM Areas
INNER JOIN Crimes
    ON(Areas.Area = Crimes.Area)
GROUP BY
    Areas.AreaName,
    Areas.Area

1 Ответ

0 голосов
/ 09 декабря 2018

PERCENT - это ключевое слово в SQL Server.Попробуйте использовать некоторые другие псевдонимы, например Pct:

SELECT
    a.Area,
    a.AreaName,
    COUNT(*) AS Total,
    Round(CONVERT(float, (COUNT(*) / @total) * 100), 3) AS Pct
FROM Areas a
INNER JOIN Crimes c
    ON a.Area = c.Area
GROUP BY
    a.AreaName,
    a.Area;

Обратите внимание, что я также ввел псевдонимы таблиц в ваш запрос, что делает код менее подробным и более легким для чтения.

Вы могли бы также использовать [Percent] в квадратных скобках.Но это открывает риск того, что кто-то, запросивший ваш запрос, также должен будет избежать этого псевдонима.Поэтому я предпочитаю вообще избегать использования ключевых слов для имен столбцов и таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...