ПОДЗАПРОСЫ с условием SQL Server

Я хотел бы попросить небольшую помощь в SQL Server.

Мне нужно суммировать $ вещи, которые купил клиент.

Мой подзапрос суммирует только сумму всей таблицы, но мне нужно что-то вроде

Numero D               TotalItem    TotalBOUGHT
-----------------------------------------------
111                     800           1200
111                     200           1200
111                     100           1200
111                     100           1200
455                     200            300
455                     100            300

это мой код

SELECT
    NumeroD, Descrip AS ClientName, CodClie AS ID, 
    Descrip1 AS Description,  TotalItem, CodUbic, 
    Día_Transaccion AS Day, Mes AS Month, ANO AS YEAR, 
    (SELECT SUM(TotalItem) FROM FORMULAFINAL) AS TotalAmount
FROM 
    FORMULAFINAL 
WHERE 
    Descrip LIKE 'Hector%' 
GROUP BY 
    TotalItem, NumeroD, Descrip, CodClie, Descrip1, 
    TotalItem, CodUbic, Día_Transaccion, Mes, Ano
ORDER BY 
    Ano DESC, NumeroD, Descrip, Descrip1, CodClie, TotalItem, 
    CodUbic, Día_Transaccion, Mes

введите описание изображения здесь

В вашем заголовке написано «SQL Server», так зачем помечать также MySQL и PostgreSQL? Какую СУБД вы используете В самом деле?

Larnu 22.04.2022 19:07

Ошибка Larnu извините, я использую SQL Server

ArnaldoData 22.04.2022 19:08

Кроме того, почему GROUP BY; запрос с GROUP BY не имеет агрегации.

Larnu 22.04.2022 19:08

Я подозреваю, что вам действительно нужен оконный SUM, а не группировка.

Larnu 22.04.2022 19:09

Вы правы, я удалил фрагмент Group By, я оставил его там, потому что раньше я его использовал.

ArnaldoData 22.04.2022 19:13

Мне нужно суммировать TotalID по "NumeroD" и "Day" транзакции

ArnaldoData 22.04.2022 19:13
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
6
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Возможно, используйте оконные функции, как показано ниже.

select  
NumeroD, Descrip AS ClientName, CodClie AS ID, Descrip1 AS Description,  TotalItem, CodUbic, Día_Transaccion AS Day, Mes AS Month, ANO AS YEAR, 
    SUM(TotalItem) OVER (partition by NumeroD, DAY, MONTH, YEAR ) AS TotalAmount
    FROM FORMULAFINAL 
    WHERE Descrip LIKE 'Hector%' 
ORDER BY Ano DESC, NumeroD, Descrip, Descrip1, CodClie, TotalItem, CodUbic, Día_Transaccion, Mes

Да, это сработало, я сделал это так, но только с OVER (NumeroD), теперь я хочу подсчитать «NumeroD» по имени клиента, чтобы узнать, сколько раз клиент покупал в магазине, у вас есть идеи? ? .... Большое спасибо.

ArnaldoData 22.04.2022 20:38

@ArnaldoData Добавьте еще один столбец для выбора, например SUM(TotalItem) OVER (partition by NumeroD, DAY, MONTH, YEAR ) AS TotalAmount, COUNT(DISTINCT NumeroD) OVER ( partition by Descrip ) FROM FORMULAFINAL

DhruvJoshi 22.04.2022 20:42

Я не могу проголосовать из-за репутации :c, но я выбираю это как правильный ответ. Ты хоть представляешь, как считать поля, о которых я писал тебе ранее?

ArnaldoData 22.04.2022 20:48

@ArnaldoData Посмотрите на мой комментарий выше

DhruvJoshi 22.04.2022 20:49

Извините, я не видел ваш последний ответ.... SQL SERVER сказал мне, что я не могу использовать DISTINCT с OVER: c

ArnaldoData 22.04.2022 20:50

верный. Я забыл об этом. Вместо этого используйте плотный ранг, как показано ниже DENSE_RANK() OVER ( partition by Descrip order by NumeroD) +DENSE_RANK() OVER ( partition by Descrip order by NumeroD desc) -1 as countoforders FROM FORMULAFINAL

DhruvJoshi 22.04.2022 20:54

DhruvJoshi ТЫ БОГ, БОЛЬШОЕ СПАСИБО

ArnaldoData 22.04.2022 21:13

Другие вопросы по теме