使用 SQL Server 2008 Management Studio、C#.NET4.5、Winforms。
我已经坚持了一段时间。
我有两个疑问,第一个:
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是一个具有0,1,2,3,4,5的int。
现在,当我得到结果时,对于零件号的第一个查询,可以说“测试零件”。
我得到854作为总数。
当我运行第二个查询时,我得到了分解,我得到以下结果:
136, 142, 150, 144, 105, 149 = *826*
所以从同一个数据源我得到了两个不同的结果。有人可以告诉我我做错了什么,在哪个查询中,甚至在两个查询中?
提前谢谢各位!