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*
그래서 : 나는 초 쿼리를 실행하면
나는 내가 다음과 같은 결과를 얻을 수 아래 휴식을 얻을. 누군가가 내가 뭘 잘못하고 있는지, 어떤 쿼리에서 또는 심지어 두 가지 쿼리를 말할 수 있습니까?
미리 감사드립니다.
변수'@의 time'은이 쿼리에 5 0 값을 데 당신이 1-6를 사용한다 그렇게 생각 ... – Meherzad
는 놀랍게도 내가 통지를 일부러 그 , 그것은 더 이상 suprisnt 결과가 ..... 그게 아주 이상한 변하지 않니? – lemunk
당신은 미래에 판매가 있니? 'SELECT max ([DATETIME]) from ILines'는 무엇을 반환합니까? – Quassnoi