1
使用SQL Server 2008 Management Studio,C#.NET4.5,Winforms。SQL:最近6個月的數據,不同的結果
我一直堅持這一段時間。
我有兩個疑問,第一:
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個月的銷售爲計數爲每個部分號。
下一個是我的第二個查詢:
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是INT,將有0,1,2,3,4,5。
現在,當我得到的結果反饋,對號碼中的第1 查詢可以說「測試部分」。
我得到作爲總數。
當我運行第二查詢我得到向下突破我得到如下結果:
136, 142, 150, 144, 105, 149 = *826*
從我得到
兩種不同的結果同一數據源
左右。有人能告訴我我做錯了什麼,在哪個查詢中,甚至是兩個查詢?
在此先感謝,夥計們!
變量'@ time'在2查詢中的值爲0到5,而在1查詢中你已經硬編碼值爲6.我認爲你應該使用1到6 ... – Meherzad 2013-04-26 11:48:48
令人驚訝的是,我沒有注意到,更驚奇它沒有改變結果.....多數民衆贊成在這很奇怪 – lemunk 2013-04-26 11:54:25
你有未來的銷售? SELECT MAX([DATETIME])FROM ILines'返回什麼? – Quassnoi 2013-04-26 11:55:57