Использование 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 месяцев продаж в качестве подсчета для каждая часть номер.
Следующая один мой второй запрос:
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.
Теперь, когда я получаю результаты обратно, для запроса на номер детали позволяет сказать «тест часть».
Я получаю как итог.
При запуске запроса второй я получаю перерыв вниз я получаю следующие результаты:
136, 142, 150, 144, 105, 149 = *826*
Так из того же источника данных я получаю две разные результаты. Может ли кто-нибудь сказать мне, что я делаю неправильно, в каком запросе или даже в обоих запросах?
Заранее спасибо, ребята!
Переменная '@ time' имеет значение от 0 до 5 в запросе 2, в то время как в 1 запросе у вас жестко закодировано значение до 6. Я так думаю, вы должны использовать от 1 до 6 ... – Meherzad
удивительно, я не заметил, что , что более удивительно, что он не изменил результат ..... это очень странно – lemunk
У вас есть продажи в будущем? Что означает 'SELECT max ([DATETIME]) от возврата ILines? – Quassnoi