SQL 쿼리에서 한 자리에 머물러 있습니다. 20 개의 데이터베이스가 있고 모든 데이터베이스의 테이블 이름과 열 이름은 동일하지만 데이터가 다릅니다. 모든 데이터베이스에서 특정 날짜의 지불 금액을 함께 얻으려면 SQL 쿼리를 만드는 중입니다.커서를 통해 모든 데이터베이스의 합계를 얻는 방법
나는 지불 테이블에 많은 컬럼을 가지고 있습니다. paymentTypeID에 따라 금액을 얻을 수 있기 때문에 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
. 이 코드는 2 개의 데이터베이스에서 지불 금액을 검색하는 데 사용됩니다. paymenttypeid 14, 15, 16, 17, 22, 24, 38은 첫 번째 데이터베이스 용이고 21, 35, 37, 50은 두 번째 데이터베이스 용입니다. 내 문제는 내가 이러한 paymentTypeID을 에 넣었을 때 절에 다른 데이터베이스의 일치하는 paymenttypeid의 양을 추가한다는 것입니다. 예를 들어 첫 번째 데이터베이스 실제 금액이 4589 $이지만 두 번째 데이터베이스 paymenttypeid를 사용하여 추가 금액을 5469 $로 추가합니다. 데이터베이스 paymenttypeid 하나만 전달하면 올바른 금액이 표시됩니다.
내 검색어의 문제점은 무엇입니까?
답장을 보내 주셔서 감사합니다. 내가 사용하는 모든 데이터베이스의 모든 PaymentTypeID가 있습니다. 나는 이것이 다른 데이터베이스 paymenttypeid에있는 하나의 database paymenttypeid와 일치하기 때문에 발생한다고 생각한다. 예를 들어 하나의 데이터베이스에 10 개의 paymentid가 있으며 3 개의 paymenttypeid 만 사용했습니다. 다른 데이터베이스에서 3 또는 3 개의 paymenttypeid 중 하나가 일치하면 해당 데이터베이스의 양을 추가하고 잘못된 금액을 표시합니다. 그리고 뷰 또는 테이블을 만들 수없는 회사 소프트웨어가 있습니다. 이 소프트웨어에서는 SELECT 명령 만 실행하고 임시 테이블과 커서 만 만들 수 있습니다. 이것은 내 문제입니다. 어떻게 해결할 수 있습니까? Pls 도움. –