#sql #sql-server
#sql #sql-сервер
Вопрос:
У меня проблема с моим SQL-запросом. Я попытался выполнить два способа
- С первым запросом я получил нужную сумму, но потерял некоторые описания имен
- Со вторым я получил описания каждого имени, но получил меньшую сумму.
Контекст: я хочу получить доход, полученный между двумя датами.
Мне нужны следующие столбцы из таблиц
- Таблица
reciboDet
, в которой мне нужны столбцыCtaIngreso, ValorUnitReciboDet
- Таблица
CuentaIngreso_A
столбцаnombrectaingreso, ctaingreso
(только для создания объединения) - Таблица
Recibo
столбцовFechaRecibo and ReciboAnulado
Чтобы получить правильные описания имен, мне нужно проверить год поступления, который был в таблице AvpgEnc
, но когда я это делаю, сумма теряется.
Первый запрос
SELECT
ReciboDet.CtaIngreso
, SUM(ReciboDet.ValorUnitReciboDet) AS Total
, CuentaIngreso_A.NombreCtaIngreso
FROM
ReciboDet
INNER JOIN CuentaIngreso_A
ON ReciboDet.CtaIngreso = CuentaIngreso_A.CtaIngreso
WHERE
(ReciboDet.NumRecibo IN
(SELECT NumRecibo
FROM Recibo
WHERE (FechaRecibo BETWEEN '01/10/2020' AND '31/10/2020')
AND (ReciboAnulado = 0)
AND (CuentaIngreso_A.Anio = DATEPART(year, FechaRecibo))
)
)
GROUP BY
ReciboDet.CtaIngreso
, CuentaIngreso_A.NombreCtaIngreso
ORDER BY
CuentaIngreso_A.NombreCtaIngreso
Второй запрос
SELECT
ReciboDet.CtaIngreso [cuenta],
sum(ReciboDet.ValorUnitReciboDet) [monto],
CuentaIngreso_A.NombreCtaIngreso [descripcion]
FROM
ReciboDet
inner join avpgenc
on ReciboDet.NumFactura = AvPgEnc.NumAvPg
inner join CuentaIngreso_A
on ReciboDet.CtaIngreso = CuentaIngreso_A.CtaIngreso
WHERE
(ReciboDet.NumRecibo IN
(SELECT NumRecibo
FROM Recibo
WHERE (FechaRecibo BETWEEN '01/10/2020' AND '31/10/2020')
AND (ReciboAnulado = 0)
)
AND (year(AvPgEnc.FechaVenceAvPg) = CuentaIngreso_A.Anio)
)
GROUP BY
ReciboDet.CtaIngreso
, CuentaIngreso_A.NombreCtaIngreso
ORDER BY
ReciboDet.CtaIngreso
Комментарии:
1. Примеры данных и желаемых результатов действительно помогли бы — как и объяснение того, что вы хотите сделать.
2. Также, пожалуйста, переформатируйте ваши запросы, чтобы они читались без горизонтальной прокрутки (например, поместите ключевые слова и отдельные столбцы в отдельную строку).