70 lines
1.7 KiB
Transact-SQL
70 lines
1.7 KiB
Transact-SQL
USE [FabApprovalSystem]
|
|
GO
|
|
/****** Object: UserDefinedFunction [dbo].[fnLotDispositionLotSummary] Script Date: 11/21/2024 11:31:55 AM ******/
|
|
SET
|
|
ANSI_NULLS ON
|
|
GO
|
|
SET
|
|
QUOTED_IDENTIFIER ON
|
|
GO
|
|
CREATE FUNCTION [dbo].[fnLotDispositionLotSummary](@IssueID int) RETURNS TABLE AS RETURN (
|
|
SELECT
|
|
SUM(
|
|
CASE
|
|
WHEN L.LotStatusOptionID IN (1, 4, 6)
|
|
AND L.DieCount > 0 THEN L.TotalCost -- Release, M_Suffix, CloseToQDB
|
|
WHEN S.ReleaseCount > 0
|
|
AND L.WaferCount > 0
|
|
AND L.TotalCost > 0 THEN S.ReleaseCount * (L.TotalCost / L.WaferCount)
|
|
ELSE 0
|
|
END
|
|
) AS [TotalReleaseCost],
|
|
SUM(
|
|
CASE
|
|
WHEN S.ReleaseCount > 0
|
|
AND L.WaferCount > 0
|
|
AND L.TotalCost > 0 THEN S.ReleaseCount
|
|
ELSE 0
|
|
END
|
|
) AS [TotalReleaseWaferCount],
|
|
SUM(
|
|
CASE
|
|
WHEN L.LotStatusOptionID IN (1, 4, 6) -- Release, M_Suffix, CloseToQDB
|
|
AND L.DieCount > 0 THEN L.DieCount
|
|
ELSE 0
|
|
END
|
|
) AS [TotalDieReleaseCount],
|
|
SUM(
|
|
CASE
|
|
WHEN L.LotStatusOptionID = 2
|
|
AND L.DieCount > 0 THEN L.TotalCost -- Scrap
|
|
WHEN S.ScrapCount > 0
|
|
AND L.WaferCount > 0
|
|
AND L.TotalCost > 0 THEN S.ScrapCount * (L.TotalCost / L.WaferCount)
|
|
ELSE 0
|
|
END
|
|
) AS [TotalScrapCost],
|
|
SUM(
|
|
CASE
|
|
WHEN S.ScrapCount > 0
|
|
AND L.WaferCount > 0
|
|
AND L.TotalCost > 0 THEN S.ScrapCount
|
|
ELSE 0
|
|
END
|
|
) AS [TotalScrapWaferCount],
|
|
SUM(
|
|
CASE
|
|
WHEN L.LotStatusOptionID = 2
|
|
AND L.DieCount > 0 THEN L.DieCount -- Scrap
|
|
ELSE 0
|
|
END
|
|
) AS [TotalScrapDieCount],
|
|
COUNT(L.LotNumber) AS LotCount
|
|
FROM
|
|
ScrapLot S
|
|
INNER JOIN Lot L ON S.IssueID = L.IssueID
|
|
AND S.LotNo = L.LotNumber
|
|
WHERE
|
|
S.IssueID = @IssueID
|
|
)
|
|
GO |