У меня есть эта хранимая процедура (я didn't это сделать):Query перестает работать после добавления поля
USE [RA_DB]
GO
/****** Object: StoredProcedure [dbo].[GetLogWasteReport] *******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetLogWasteReport]
-- Add the parameters for the stored procedure here
@IdLogWaste int,
@initDate DateTime,
@endDate DateTime
AS
BEGIN
SET FMTONLY OFF
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT lwd.Manifest
,SUM(CASE WHEN lwd.Manifest IS NULL THEN 0 ELSE lwd.Quantity END) AS TOTAL
,COUNT(lwd.Id) AS Count
INTO #TEMPTotal
FROM [dbo].[LogWaste] lw (NOLOCK)
INNER JOIN [dbo].[LogWasteDetail] lwd (NOLOCK)
ON lw.Id = lwd.IdLogWaste
--WHERE
-- lw.Id = @IdLogWaste
WHERE
lwd.OutputDate IS NOT NULL
AND
lwd.IdWaste = @IdLogWaste
AND
lwd.OutputDate BETWEEN @initDate AND @endDate
GROUP BY lwd.Manifest
SELECT
w.Name AS Waste
,a.Description AS Area
,lwd.Quantity
, CONVERT(VARCHAR(12),lwd.InitDate,101) AS InitDate
, CONVERT(VARCHAR(12),lwd.OutputDate,101) AS OutputDate
,lwd.Balance
,lwd.Manifest
,temp.TOTAL
,temp.Count
FROM [dbo].[LogWaste] lw (NOLOCK)
INNER JOIN [dbo].[LogWasteDetail] lwd (NOLOCK)
ON lw.Id = lwd.IdLogWaste
INNER JOIN [dbo].[Waste] w (NOLOCK)
ON lwd.IdWaste = w.Id
INNER JOIN [dbo].[Area] a (NOLOCK)
ON a.Id = lwd.IdArea
INNER JOIN #TEMPTotal temp
ON lwd.Manifest = temp.Manifest OR (lwd.Manifest IS NULL AND temp.Manifest IS NULL)
--WHERE
-- lw.Id = @IdLogWaste
WHERE
lwd.OutputDate IS NOT NULL
AND
lwd.IdWaste = @IdLogWaste
AND
lwd.OutputDate BETWEEN @initDate AND @endDate
ORDER BY lwd.Manifest,lwd.InitDate
DROP TABLE #TEMPTotal
END
То, что я хочу сделать, это добавить поле «BranchOfficeId», что я могу получить от [LogWaste] (есть BranchOfficeIdFk), что мне нужно сделать, чтобы выбрать этот магазин в этом магазине? я пытаюсь что-то вроде
USE [SA_DB]
GO
/****** Object: StoredProcedure [dbo].[GetLogWasteReport] ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetLogWasteReport]
-- Add the parameters for the stored procedure here
@IdLogWaste int,
@initDate DateTime,
@endDate DateTime,
@branchOfficeId Int
AS
BEGIN
SET FMTONLY OFF
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT lwd.Manifest
,SUM(CASE WHEN lwd.Manifest IS NULL THEN 0 ELSE lwd.Quantity END) AS TOTAL
,COUNT(lwd.Id) AS Count
INTO #TEMPTotal
FROM [dbo].[LogWaste] lw (NOLOCK)
INNER JOIN [dbo].[LogWasteDetail] lwd (NOLOCK)
ON lw.Id = lwd.IdLogWaste
--WHERE
-- lw.Id = @IdLogWaste
WHERE
lwd.OutputDate IS NOT NULL
AND
lwd.IdWaste = @IdLogWaste
AND
lwd.OutputDate BETWEEN @initDate AND @endDate
GROUP BY lwd.Manifest
SELECT
w.Name AS Waste
,a.Description AS Area
,lwd.Quantity
, CONVERT(VARCHAR(12),lwd.InitDate,101) AS InitDate
, CONVERT(VARCHAR(12),lwd.OutputDate,101) AS OutputDate
,lwd.Balance
,lwd.Manifest
,lw.BranchOfficeId
,temp.TOTAL
,temp.Count
FROM [dbo].[LogWaste] lw (NOLOCK)
INNER JOIN [dbo].[LogWasteDetail] lwd (NOLOCK)
ON lw.Id = lwd.IdLogWaste
INNER JOIN [dbo].[Waste] w (NOLOCK)
ON lwd.IdWaste = w.Id
INNER JOIN [dbo].[Area] a (NOLOCK)
ON a.Id = lwd.IdArea
INNER JOIN #TEMPTotal temp
ON lwd.Manifest = temp.Manifest OR (lwd.Manifest IS NULL AND temp.Manifest IS NULL)
--WHERE
-- lw.Id = @IdLogWaste
WHERE
lwd.OutputDate IS NOT NULL
AND
lw.BranchOfficeId = @branchOfficeId
AND
lwd.IdWaste = @IdLogWaste
AND
lwd.OutputDate BETWEEN @initDate AND @endDate
ORDER BY lwd.Manifest,lwd.InitDate
DROP TABLE #TEMPTotal
END
Но didn't работы, мой запрос всегда возвращает значение 0, может кто-нибудь мне помочь?
Запрос (до):
result = context.GetLogWasteReport(id, initDate, endDate).ToList();
запросов (после):
result = context.GetLogWasteReport(id, initDate, endDate, branchOfficeId).ToList();
Примечание: перед тем, как добавить полевые работы branchOfficeId запроса и получить значения
Но значение не равно нулю, таблица отходов имеют значение в каждом branchOfficeId, почему это может пришел нуль? – Dawin