2011-10-07 2 views
1

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 하나만 전달하면 올바른 금액이 표시됩니다.

내 검색어의 문제점은 무엇입니까?

답변

1

DB1에서 유형 1, 2 및 3 만 입력하고 DB2에서 유형 4, 5 및 6 만 필요하지만 쿼리가 그렇게하지 않으면 유형 1, 2를 묻습니다. , 3, 4, 5 및 6 (DB1 및 DB2).

즉, 원하는 유형에 따라 각 데이터베이스에 대해 다른 WHERE 절을 사용해야합니다. 그렇다면 각 데이터베이스에서 원하는 유형을 어떻게 알 수 있으며 스토어드 프로 시저에서 어떻게 그 논리를 표현할 수 있습니까?

완전히 다른 해결책으로 올바른 WHERE 절을 사용하여 각 데이터베이스에서보기를 만든 다음 보고서보기를 쿼리하면됩니다.

+0

답장을 보내 주셔서 감사합니다. 내가 사용하는 모든 데이터베이스의 모든 PaymentTypeID가 있습니다. 나는 이것이 다른 데이터베이스 paymenttypeid에있는 하나의 database paymenttypeid와 일치하기 때문에 발생한다고 생각한다. 예를 들어 하나의 데이터베이스에 10 개의 paymentid가 있으며 3 개의 paymenttypeid 만 사용했습니다. 다른 데이터베이스에서 3 또는 3 개의 paymenttypeid 중 하나가 일치하면 해당 데이터베이스의 양을 추가하고 잘못된 금액을 표시합니다. 그리고 뷰 또는 테이블을 만들 수없는 회사 소프트웨어가 있습니다. 이 소프트웨어에서는 SELECT 명령 만 실행하고 임시 테이블과 커서 만 만들 수 있습니다. 이것은 내 문제입니다. 어떻게 해결할 수 있습니까? Pls 도움. –

관련 문제