Я застрял в одном месте в запросе SQL. У меня есть 20 баз данных, и все имена таблиц и столбцов базы данных одинаковы, но данные разные. Я создаю SQL-запрос для получения суммы платежа за определенную дату из всех баз данных вместе.
У меня много столбцов в таблице платежей. Мне нужно на сумму (сумму) в отношении там столбца paymentTypeID, потому что я могу получить сумму на основе paymentTypeID. Все идентификаторы paymentType различны в базах данных, но иногда они одинаковы. Я создал курсор для этого.
Мой код:
create table #tmpDBs(DBName varchar(255), CurrentDayPaymentAmount float)
declare cDBs cursor for
select name from master.dbo.sysdatabases
declare @DB varchar(255)
open cDBs
fetch next from cDBs into @DB
while @@fetch_status = 0
begin
exec('
declare @DateCurrent datetime
set @DateCurrent = '{Current Date}'
insert into #tmpDBs
select DBName = ' + @DB + ',
CurrentDayPaymentAmount = (select sum(p.amount) from ' + @DB + '.dbo.Payment p where p.eDate between @DateCurrent and dateadd(day, 1, @DateCurrent) and (p.paymenttypeid in (14, 15, 16, 17, 21, 22, 24, 35, 37, 38, 50)))
')
fetch next from cDBs into @DB
end
close cDBs
deallocate cDBs
select * from #tmpDBs
drop table #tmpDBs
Я использовал условие In, чтобы передать все базы данных paymenttypeid вместе.
Этот код предназначен для получения суммы платежа из 2 баз данных. paymenttypeid 14, 15, 16, 17, 22, 24, 38 - для первой базы данных, а 21, 35, 37, 50 - для второй базы данных. Моя проблема заключается в том, что, когда я помещаю эти paymentTypeID в предложение In , он добавляет сумму, соответствующую идентификатору paymenttype другой базы данных.
Например, если фактическая сумма первой базы данных составляет 4589 $, но она добавляет дополнительную сумму, скажем, 5469 $, с использованием второй базы данных paymenttypeid. Если я передаю только один тип оплаты базы данных, он показывает правильную сумму.
В чем проблема в моем запросе.