Hi Team
I have duplicate record from my table, reason being i notice its because there is more than one FarmName with different CustomerName uses same tripsheetno that is why its doing that. How can i restrict this so there could be unique trip sheet number per each FarmName?
USE [Batcher] GO /****** Object: StoredProcedure [dbo].[GetTripWeightReport] Script Date: 2024/04/30 15:19:10 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[GetTripWeightReport] --'2024-04-24', '2024-04-25' ( @StartDate Date, @EndDate Date ) AS BEGIN SELECT DISTINCT t.TripsheetNo, t.ProductWeight AS 'TripSheetReport Weight' , cu.Customer, f.FarmID INTO #FINISHEDPRODUCT FROM [dbo].[Tripsheet] t LEFT JOIN [dbo].[WeighbridgeTicket] wt ON t.TripsheetNo = wt.trip LEFT JOIN [dbo].[Customer] cu ON cu.CustomerID = wt.CustomerID LEFT JOIN [dbo].[Farm] f ON f.FarmID = cu.Farmid WHERE CONVERT(DATE, t.Tripdate, 103) BETWEEN @StartDate AND @EndDate And topseal <> '' and bottomseal <> '' SELECT DISTINCT * INTO #SALES FROM ( SELECT DISTINCT ProdDay = CASE WHEN CAST(WT.LoadedTime AS Time) > '00:00:00' AND CAST(WT.LoadedTime AS Time) < '06:00:00' THEN DATEADD(day, -1, Convert(DATE, WT.LoadedDate, 103)) ELSE Convert(DATE, WT.LoadedDate, 103) END, tps.TripsheetNo, CASE WHEN tps.TripsheetNo = 229080 AND WT.LoadedDate = @StartDate THEN 28020 ELSE SUM(tk.productweight) END AS 'SalesReport Weight', WT.LoadedTime, WT.LoadedDate FROM [Batcher].[dbo].[Tripsheet] tps INNER JOIN [Batcher].[dbo].[WeighbridgeTicket] tk on tps.tripsheetno = tk.trip LEFT JOIN ( SELECT trip, LoadedDate = MIN(WeighTime), LoadedTime = SUBSTRING(CONVERT(VARCHAR, MIN(Weightime), 108),12,8) FROM [Batcher].[dbo].[WeighbridgeTicket] WHERE Compartment <> 'truck-empty' GROUP BY trip ) WT on tk.trip = WT.trip LEFT JOIN Batcher.dbo.TripReturnRedelivery TRR ON TRR.Ticket = TK.ticketnumber WHERE tk.productweight > 0 GROUP BY CASE WHEN CAST(WT.LoadedTime AS Time) > '00:00:00' AND CAST(WT.LoadedTime AS Time) < '06:00:00' THEN DATEADD(day, -1, Convert(DATE, WT.LoadedDate, 103)) ELSE Convert(DATE, WT.LoadedDate, 103) END, tps.TripsheetNo, WT.LoadedTime, WT.LoadedDate ) Core WHERE CONVERT(datetime, Core.LoadedDate, 103) BETWEEN @StartDate AND @EndDate; SELECT DISTINCT s.ProdDay, s.Tripsheetno, s.[SalesReport Weight], ISNULL(cu.Customer, '') as Customer, ISNULL(f.FarmID, '') as FarmName, ISNULL(f.[TripSheetReport Weight], 0) as [TripSheetReport Weight], ISNULL(f.[TripSheetReport Weight], 0) - s.[SalesReport Weight] AS Discrepancy, CASE WHEN ISNULL(f.[TripSheetReport Weight], 0) != s.[SalesReport Weight] THEN 'Warning' WHEN s.[SalesReport Weight] = f.[TripSheetReport Weight] THEN 'PASS' END AS ErrorWarning FROM #SALES s LEFT JOIN #FINISHEDPRODUCT f ON s.Tripsheetno = f.TripsheetNo LEFT JOIN [dbo].[Customer] cu ON cu.CustomerID = cu.CustomerID LEFT JOIN [dbo].[Farm] fa ON f.FarmID = cu.Farmid END