我在SQL查詢中查找一個地方。我有20個數據庫,所有數據庫的表名和列名都是相同的,但數據是不同的。我正在創建一個SQL查詢來從所有數據庫中獲取特定日期的付款金額。如何通過光標獲得所有數據庫的數量總和
我在付款表中有很多列。因爲我可以根據paymentTypeID獲取金額,所以我需要關於paymentTypeID列的總和(金額)。所有paymentTypeID在數據庫中都不相同,但有時它是相同的。我爲此創建了一個遊標。
我的代碼是:
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
我曾經在條款通過所有數據庫paymenttypeid在一起。 此代碼用於從2個數據庫中檢索付款金額。 paymenttypeid 14,15,16,17,22,24,38用於第一數據庫,而21,35,37,50用於第二數據庫。我的問題是,當我將這些paymentTypeID放在的子句中時,它會添加其他數據庫的匹配paymenttypeid的數量。 例如,如果第一個數據庫實際金額爲4589 $,但它通過使用第二個數據庫paymenttypeid添加額外金額,例如5469 $。如果我只通過一個數據庫paymenttypeid它顯示正確的金額。
我的查詢中有什麼問題。
感謝您的回覆。我擁有使用的所有數據庫的所有PaymentTypeID。我認爲這是因爲在其他數據庫paymenttypeid中匹配一個數據庫paymenttypeid而發生的。例如,我在一個數據庫中有10個paymentid,只使用3個paymenttypeid。如果任何3個或全部3個paymenttypeid中的任何一個與其他數據庫中的匹配,則添加該數據庫的數量並顯示錯誤的數量。我有我的公司軟件,我無法創建視圖或表格。在這個軟件中,我只能運行SELECT命令,只創建臨時表和光標。這是我的問題。我該如何解決這個問題。請幫助。 –