2013-04-26 3 views
1

SQL Server 2008 Management Studio, C# .NET4.5, Winforms를 사용하십시오.SQL : 지난 6 개월 데이터, 다른 결과

나는 한동안이 일에 매달 렸습니다.

나는 두 개의 쿼리, 1이 있습니다

ALTER PROCEDURE [dbo].[Last6MonthSales] 
AS 
    DELETE FROM dbo.Sales6months 

    INSERT INTO dbo.Sales6months 
    SELECT Part, SUM(COALESCE(dbo.iLines.Qty, 0)) as qty 
    FROM dbo.IHeads 
    LEFT JOIN dbo.Ilines ON dbo.Iheads.document = dbo.Ilines.document 
    WHERE dbo.IHeads.prefix = 'i' 
     AND month([ILines].[datetime]) > month(dateadd(month, datediff(month, 0, (SELECT max([DATETIME]) FROM ILines)) - 6, 0)) 
     AND year([ILines].[datetime]) > year(dateadd(month, datediff(month, 0, (SELECT max([DATETIME]) FROM ILines)) - 6, 0)) 

당신이 각 부분 번호를 나에게 로 지난 6 개월 판매를 얻을 말할 수있는이 사람.가있을 것이다 INT입니다

ALTER PROCEDURE [dbo].[q6MonthsHistory] 
    @part as varchar(55), 
    @time as int 
AS 
    SELECT SUM(Qty) as qty 
    FROM 
     ilines 
    RIGHT JOIN 
     IHeads ON dbo.Iheads.document = dbo.Ilines.document 
    WHERE 
     Part = @part 
     AND month(ilines.[datetime]) = month(dateadd(month, datediff(month, 0, (SELECT max([DATETIME]) FROM ILines)) - @time, 0)) 
     AND year(ilines.[datetime]) = year(dateadd(month, datediff(month, 0, (SELECT max([DATETIME]) FROM ILines)) - @time, 0)) 

이 하나가 마지막 6개월 이상 아래 휴식을 얻을 수 있습니다 볼 수 있듯이, @time :

다음 하나는 내 두 번째 쿼리입니다 0,1,2,3,4,5. 내가 다시 결과를 얻을 때

지금, 부품 번호에 1 쿼리에 대한 "테스트 부분" 말할 수 있습니다.

나는 입니다. 내가 두 개의 서로 다른 결과 받고 있어요 동일한 데이터 소스에서

136, 142, 150, 144, 105, 149 = *826* 

그래서 : 나는 쿼리를 실행하면

나는 내가 다음과 같은 결과를 얻을 수 아래 휴식을 얻을. 누군가가 내가 뭘 잘못하고 있는지, 어떤 쿼리에서 또는 심지어 두 가지 쿼리를 말할 수 있습니까?

미리 감사드립니다.

+1

변수'@의 time'은이 쿼리에 5 0 값을 데 당신이 1-6를 사용한다 그렇게 생각 ... – Meherzad

+0

는 놀랍게도 내가 통지를 일부러 그 , 그것은 더 이상 suprisnt 결과가 ..... 그게 아주 이상한 변하지 않니? – lemunk

+0

당신은 미래에 판매가 있니? 'SELECT max ([DATETIME]) from ILines'는 무엇을 반환합니까? – Quassnoi

답변

0

글쎄 그것은 두 가지 이유가 있었는데 첫 번째는 @emherzad에 의해 선택되었습니다. 1 번째 -6이 있었고 두 번째 쿼리에서 0-5가있었습니다.

다른 이유는 첫 번째 쿼리가 내 테이블을 실제로 업데이트하지 않았기 때문에 아무런 결과도 얻지 못했고, 이는 너무 월간()> 월간() 작동하지 않아서 삭제 된 것이므로 이제 삭제 될 것입니다. 일.

감사합니다. 1 개 쿼리에서 열심히 6으로 값을 코딩 반면

관련 문제