• Сортировка по одной колонке. Как избежать добавления в GROUP BY остальных?

    @thelastride Автор вопроса
    Выдрал более-менее реальный запрос:

    SELECT 
    	a.id id,
    	a.site site, 
    	t.date date_,
    	CASE WHEN (t.type = 13) THEN round(sum(t.d * t.fx), 2) END debit,
    	CASE WHEN (t.type = 13) THEN round(sum(t.c * t.fx), 2) END credit,
    	CASE WHEN (t.type = 9) THEN round(sum(t.c * t.fx), 2) ELSE 0 END bonus
    FROM 
    	r.trans t,
    	r.accs a
    WHERE 
    	t.id = a.id AND 
    	t.stype = 444
    GROUP BY 
    	a.id


    Моей ошибкой было, что я не упомянул CASE. В этом случае мне нужна сортировка только по a.id (в крайнем случае с a.site). Но запрос требует группировки по t.date, t.type, что нужно избежать всеми способами.
  • Сортировка по одной колонке. Как избежать добавления в GROUP BY остальных?

    @thelastride Автор вопроса
    Дмитрий Шицков, цель - склеить лишь по одной колонке (которая в GROUP BY). Использование всех колонок в GROUP BY грозит неправильной группировкой. Представим что представления представляют собой транзакции. В acc_value будут суммы, в acc_name будут типы транзакций, а в acc_id ИД пользователя. Мне нужна группировка по acc_id, чтобы узнать сколько транзакций вообще совершил данный пользователь.

    И вот в первом представлении я получаю такие данные:

    1 - TransType1 - 0.10
    1 - TransType2 - 0.20
    1 - TransType2 - 2.00
    1 - TransType3 - 0.30

    Мне нужно узнать общее количество сумм во втором представлении. Конечно, именно эту задачу выполнить легко с помощью WHERE, но в моём реальном случае нужна группировка по одной лишь колонке, ибо массив данных пользователей, типов итд. гораздо больше и разнообразней.