2014-03-25 5 views
0

SQL Server 저장 프로 시저에 매우 이상한 문제가 있습니다. 이 저장 프로 시저를 실행할 때마다 다른 결과 값을 반환합니다. 나는 3 개의 임시 테이블을 사용하고 있으며 최종 결과로 일부 컬럼을 요약하고있다. 다른 실행 세 시간 동안 결과SQL Server 저장 프로 시저 임시 테이블에서 잘못된 결과가 반환됩니다.

ALTER PROCEDURE [plannabavki].[SumarnoKonta] 
    @godina1 int, 
    @godina2 int, 
    @godina3 int 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 
if OBJECT_ID('a2014s') is not null 
drop table a2014s 
if OBJECT_ID('a2015s') is not null 
drop table a2015s 
if OBJECT_ID('a2016s') is not null 
drop table a2016s 

--razlika = planirano-procjenjeno 
create table a2014s (ktto nvarchar(30),kttonaziv nvarchar(max),planirano money,procjenjena money,razlika money) 
create table a2015s (ktto nvarchar(30),kttonaziv nvarchar(max),planirano money,procjenjena money,razlika money) 
create table a2016s (ktto nvarchar(30),kttonaziv nvarchar(max),planirano money,procjenjena money,razlika money) 


insert into a2014s (ktto,kttonaziv,planirano,procjenjena,razlika) 
select [Ktto],[KttoNaziv],sum(case when pk.NP1 is null then 0 else pk.NP1 end),sum(case when st.[ProcjenjenaVrijednostNabavke] is null then 0 else st.[ProcjenjenaVrijednostNabavke] end),sum(case when pk.NP1 is null then 0 else pk.NP1 end)-sum(case when st.[ProcjenjenaVrijednostNabavke] is null then 0 else st.[ProcjenjenaVrijednostNabavke] end) 

    FROM [dbo].[Stavke] as st 
    inner join [dbo].[PlanskaKalkulacija] as pk on st.Ktto=pk.KontoId 
    where [email protected] and PlanskaKalkulacija_Id=1 
    group by ktto,KttoNaziv 
    order by ktto 

    insert into a2015s (ktto,kttonaziv,planirano,procjenjena,razlika) 
select [Ktto],[KttoNaziv],sum(case when pk.NP2 is null then 0 else pk.NP2 end),sum(case when st.[ProcjenjenaVrijednostNabavke] is null then 0 else st.[ProcjenjenaVrijednostNabavke] end),sum(case when pk.NP2 is null then 0 else pk.NP2 end)-sum(case when st.[ProcjenjenaVrijednostNabavke] is null then 0 else st.[ProcjenjenaVrijednostNabavke] end) 

    FROM [dbo].[Stavke] as st 
    inner join [dbo].[PlanskaKalkulacija] as pk on st.Ktto=pk.KontoId 
    where [email protected] and PlanskaKalkulacija_Id=1 
    group by ktto,KttoNaziv 
    order by ktto 

    insert into a2016s (ktto,kttonaziv,planirano,procjenjena,razlika) 
select [Ktto],[KttoNaziv],sum(case when pk.NP3 is null then 0 else pk.NP3 end),sum(case when st.[ProcjenjenaVrijednostNabavke] is null then 0 else st.[ProcjenjenaVrijednostNabavke] end),sum(case when pk.NP3 is null then 0 else pk.NP3 end)-sum(case when st.[ProcjenjenaVrijednostNabavke] is null then 0 else st.[ProcjenjenaVrijednostNabavke] end) 
    FROM [dbo].[Stavke] as st 
    inner join [dbo].[PlanskaKalkulacija] as pk on st.Ktto=pk.KontoId 
    where [email protected] and PlanskaKalkulacija_Id=1 
    group by ktto,KttoNaziv 
    order by ktto 

select a2014s.ktto,a2014s.kttonaziv, 
sum(case when a2014s.planirano is null then 0 else a2014s.planirano end) as 'PlaniranoI',sum(case when a2014s.procjenjena is null then 0 else a2014s.procjenjena end)as 'ProcjenjenoI',sum(case when a2014s.razlika is null then 0 else a2014s.razlika end) as 'RazlikaI', 
sum(case when a2015s.planirano is null then 0 else a2015s.planirano end) as 'PlaniranoII',sum(case when a2015s.procjenjena is null then 0 else a2015s.procjenjena end)as 'ProcjenjenoII',sum(case when a2015s.razlika is null then 0 else a2015s.razlika end) as 'RazlikaII', 
sum(case when a2016s.planirano is null then 0 else a2016s.planirano end) as 'PlaniranoIII',sum(case when a2016s.procjenjena is null then 0 else a2016s.procjenjena end)as 'ProcjenjenoIII',sum(case when a2016s.razlika is null then 0 else a2016s.razlika end) as 'RazlikaIII' 
from a2014s 
    left join a2015s on a2014s.ktto=a2015s.ktto 
    left join a2016s on a2014s.ktto=a2016s.ktto 
    where a2014s.[ktto] is not null 
group by a2014s.ktto,a2014s.kttonaziv 
    order by ktto 

drop table a2014s 
drop table a2015s 
drop table a2016s 

END 
다음

있는 스크린 샷 (하지만 DB의 데이터를 전혀 변경되지 않습니다) :

는 내가 잘못하고있는 무슨 확실하지 않다, 여기 내 저장 프로 시저 코드 여기 http://tinypic.com/view.php?pic=1z2d0uf&s=8#.UzGgQfldUn4 http://tinypic.com/view.php?pic=2ut5f87&s=8#.UzGgW_ldUn4

http://tinypic.com/view.php?pic=wjgfex&s=8#.UzGf4fldUn4 결과의 차이이다

http://tinypic.com/view.php?pic=b8mnsz&s=8#.UzGqpvldUn4

행 3에서는 값이 다르지만 테이블의 데이터는 업데이트되거나 변경되지 않습니다. 나는이 저장 프로 시저를 3 번 ​​실행합니다.

+1

당신은 결과가 어떻게 다른지 설명 할 수 있습니까? 두 개의 다른 결과 세트를 포함하도록 질문을 편집하면 도움이됩니다. –

+0

이 링크를 확인하십시오 http://tinypic.com/view.php?pic=b8mnsz&s=8#.UzGqpvldUn4 그러면 3 개의 결과가 모든 행에서 보이고 값은 다르지만 테이블에서 변경된 사항은 없습니다. – Nezir

+2

. . 결과는 아마도 다른 순서 일 것입니다. 'order by '문은 안정적이지 않습니다. 키의 행이 여러 개있을 수 있기 때문입니다. –

답변

0

DB 내부에서 어떻게 든 생성 된 임시 테이블을 삭제하여이 문제를 해결했습니다. 또한 모든 검색어에서 'order by'명령을 삭제합니다 (Gordon 고맙습니다의 조언).

이제이 SP에서 변경된 결과가 표시되지 않습니다.

제거 된 임시 테이블 : http://tinypic.com/view.php?pic=2q1flu8&s=8#.UzGyZPldUn4

관련 문제