我正在使用MS SQL Server,並有一個存儲過程,我根據某些規則評估事務,並根據這些規則將每行標記爲符合條件或不符合條件。例如,前一年的交易不合格,某些產品可能不合格。SQL要跟蹤規則
我也想記錄交易不符合條件的原因。例如,從去年開始,不合格的產品等。我有一個列出所有不合格代碼的表格。
我按順序應用規則並在定義爲int的字段eligCode中記錄ineligibility的第一個原因。
但我似乎無法弄清楚如何在存儲過程中編碼。任何幫助將不勝感激。提前致謝。
我正在使用MS SQL Server,並有一個存儲過程,我根據某些規則評估事務,並根據這些規則將每行標記爲符合條件或不符合條件。例如,前一年的交易不合格,某些產品可能不合格。SQL要跟蹤規則
我也想記錄交易不符合條件的原因。例如,從去年開始,不合格的產品等。我有一個列出所有不合格代碼的表格。
我按順序應用規則並在定義爲int的字段eligCode中記錄ineligibility的第一個原因。
但我似乎無法弄清楚如何在存儲過程中編碼。任何幫助將不勝感激。提前致謝。
這應該給你的頭開始:
CREATE PROCEDURE [dbo.YourSprocName]
AS
BEGIN
SELECT CASE
WHEN datepart(year, transaction_date) = datepart(year, getdate()) - 1 --if transaction_date year = previous year
THEN 'Ineligible'
WHEN product_type = <something> -- non eligible products
THEN 'Non-eligible'
ELSE 'Eligible'
END AS transaction_status
,CASE
WHEN ineligibility_code = 1 -- assuming 1 is one of the ineligbility code
THEN 'Bad transaction'
ELSE 'Unknown'
END AS ineligibilty_reason_desc
FROM YourTable
WHERE yourColumn = <condition>
END
declare @eligCode as int
declare @TransID as int
....
select @TransID = NNN -- some value declared above
@eligCode = CASE
WHEN YEAR(TRANSACTION_DATE) < YEAR(getdate()) THEN 1
WHEN [CONDITION2] THEN 2
WHEN [CONDITION3] THEN 3
WHEN [CONDITION4] THEN 4
ELSE 0
END
...
Insert into LOG_TABLE (Transaction_ID, eligCode) values (@TransID, @eligCode)
查找到CASE語句。 –