ПОДЗАПРОСЫ с условием 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
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
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

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