У меня проблемы с запросом SQL:
Вот что я пытаюсь сделать:
"SELECT DISTINCT *, SUM(amt) AS ttl_amt FROM table WHERE..."
Два из моих полей имеют тип «текст», SQL не позволяет выбрать этот тип как DISTINCT, так как они не сравнимы.
Мне нужно сгруппировать относительные элементы и отобразить их как одну строку с объединенным ttl_amt
значение, как показано выше.
Я попытался выбрать «нетекстовые» поля (varchar, float, int и т. Д.) В SELECT DISTINCT
заявление, а затем потянув текстовые поля в while()
цикл с использованием другого SQL-запроса, но эта информация не отображается (текстовые поля).
Если вам нужно больше информации, дайте мне знать.
Есть идеи? Я не эксперт, когда дело доходит до синтаксиса SQL.
Когда используешь агрегатные функции лайк SUM()
, COUNT()
, AVG()
и т. д. все внешние поля внутри SELECT
раздел должен быть либо в пределах агрегатные функции или должен быть упомянут в GROUP BY
,
Кажется, вы действительно хотите, чтобы SQL был чем-то вроде этого:
select Field1, -- you can't use * here!
Field2,
...
FieldN,
Sum(amt)
from Table
group by Field1, -- you can't use * here!
Field2,
...
FieldN
group by
делает группировку отличной, поэтому вам не нужно никаких дополнительных DISTINCT
Вот
Вы пытались использовать группу по заявке вместо отдельных? например:
Выберите field1, field2, field3, sum (field4) из таблицы, где … группировать по field1, field2, field3;
С уважением
Вы правы: тип данных Text не допускается ни в одной группе. попробуйте через конвертировать
например
SELECT DISTINCT convert(varchar(max),amt) AS ttl_amt FROM table WHERE 1=1
(* Не следует использовать в отдельном)
Редактировать: СУММА на варчарфилде была глупая идея, извините. Исправленный