Есть ли способ вычесть кредит из совокупной суммы в запросе SQL?

Я создаю отчет в ColdFusion, похожий на регистр проверок. На данный момент я суммировал суммы по номерам чеков; однако, если к тому же номеру чека применен кредит, он отображается как другая запись. Чтобы соответствовать способу запроса отчета, мне нужно иметь возможность показывать только одну запись для каждого номера чека с соответствующей суммой.

Данные о сумме хранятся в столбце суммы таблицы в виде числа с плавающей запятой. В таблице кредит фактически указан как -25. Значения столбцов chckDate, payee и rtCode идентичны для строки с кредитом.

рткод проверитьНет получатель платежа количество РП 1234 Чарли Браун 3063 РП 1234 Чарли Браун -25

Чек № XXXX $3063,00
Чек № XXXX (25 долларов США)

Должен отображаться только чек № XXXX на сумму 3038 долларов США.

<cfquery name = "checkListSum" datasource = "xxx">
    select distinct checkno, sum(amount) as checkReportSum, chckDate, payee, rtCode
      from table
     where year(chckDate) = #checkYear#
       and month(chckDate) = #checkMonth#
  group by checkNo, chckDate, payee, rtCode
  order by chckDate

Это запрос, который я использую для извлечения информации из таблицы, однако я не знаю, как вычесть оценку.

Любая помощь будет принята с благодарностью.

-25 — это сумма в строке? если да, то он должен быть правильно добавлен функцией SUM() в ваш запрос.

Randy 28.08.2024 20:58

Если checkNo не совпадает для строки с кредитом, это ваша проблема

Xavier J 28.08.2024 21:07

Ваш пример данных должен включать значения chckDate для каждой строки.

ValNik 28.08.2024 21:13

Вы группируете по chckDate, но не показываете это. Вероятно, проблема в том, что chckDate отличается. Или что получатели платежа содержат небольшие различия, такие как пробелы.

Schwern 28.08.2024 21:14

Кроме того, вам не нужно select distinct, поскольку вы уже группируетесь.

Schwern 28.08.2024 21:17

вам не нужно различать, если у вас есть группировка + проблема, скорее всего, связана с полем даты, дата проверки может отличаться для этих двух записей, поэтому группировка по не работает правильно и разбивает ее на две строки

trillion 28.08.2024 21:18

Если неясно, что говорят другие о chckDate, и вам все еще нужны рекомендации, обновите вопрос, указав пример данных, включающий этот столбец, а также желаемые результаты из этого SQL-запроса, и мы можем помочь вам создать SQL-код, чтобы добиться этого.

JNevill 28.08.2024 21:57

@Schwern В вопросе говорится, что значения столбцов chckDate, payee и rtCode идентичны.

Barmar 28.08.2024 22:36

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

trillion 28.08.2024 22:38

@Бармар, я думаю, они в это верят.

Schwern 28.08.2024 22:42

минимально воспроизводимый пример должен включать в себя как данные таблицы образцов, так и ожидаемый результат. Также добавьте тег для используемой базы данных. (В вашем запросе используются функции, специфичные для продукта.)

jarlh 29.08.2024 09:33
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
11
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Попробуйте запустить этот запрос

select checkno, sum(amount) as checkReportSum, min(chckDate)chckDate
    ,min(payee)payee, min(rtCode) rtCode
from tableХ
where year(chckDate) = #checkYear#
  and month(chckDate) = #checkMonth#
group by checkNo
order by min(chckDate)

Какой результат вы получите?

ВалНик :) как всегда занимаюсь sql! вы забыли присвоение псевдонима min(chckDate) и забыли указать псевдоним min(chckDate) в предложении SELECT.

Derek Roberts 28.08.2024 22:51

Я этого не поняла You forgot to give an alias. Какой псевдоним в min(chckDate)chckDate забыл?

ValNik 28.08.2024 22:58

сейчас выглядит нормально...

Derek Roberts 28.08.2024 23:02

ВЫБЕРИТЕ ... [ [ AS ] псевдоним_столбца ]. AS не является обязательным. (Learn.microsoft.com/en-us/sql/t-sql/queries/…)

ValNik 28.08.2024 23:07

а что насчет читабельности? что, если я новичок в SQL и вижу ваш код впервые... :(> "Псевдонимы также используются для указания имен результатов выражений",

Derek Roberts 28.08.2024 23:12

Псевдонимы, несомненно, полезны для удобства чтения. Однако синтаксис expr1 as alias1 и expr1 alias1 разрешен правилами. И никакого lack of alias здесь нет. Псевдоним присутствует в обеих версиях. Можно сказать, что одна форма лучше другой – здесь я не буду спорить, это действительно так.

ValNik 28.08.2024 23:27

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