我是一個新手SQL程序員,並且一直對我的頭撞這一切,所以請耐心等待。我的情況是這樣的:我有一個需要發送到我們的電子商務網站的SKU表格。這些SKU中的每一個都具有「數量」,「有效」值和「停用」值。當我們一次處理一個SKU時,這很容易處理,但現在我必須發送包含一個或多個SKU的工具包。需要一個SQL Server 2008的case語句來評估一個表並返回兩個值
例如,如果我的包的ID是000920_001449_001718_999999(4個單品的組合),我需要收集數據,像這樣整套的SKU:
這是我需要把邏輯:
- 如果任何SKU具有空值或WEBNO作爲IsActive值,則整個套件必須返回WEBNO。否則,返回WEBYES。
- 如果任何SKU具有空值或'1'作爲IsDiscontinued值,則整個套件必須返回IsDiscontinued ='1'。否則,返回0。
我的代碼是一個有點亂,但這裏是我到目前爲止管理:
SELECT
CASE WHEN 'WEBNO' in
(
SELECT IsActive
FROM #SkusToSend as Sending
RIGHT JOIN
(
SELECT * FROM [eCommerce].[dbo].[Split] (
'000920_001449_001718_999999'
,'_')
) as SplitSkus
on Sending.SKU = SplitSkus.items
) THEN 'WEBNO'
ELSE 'WEBYES'
END
我的問題是:是否有可能寫一個說法解析我的示例表,只返回一行'IsActive'和'IsDiscontinued'?我試過在這些字段上使用GROUP BY和HAVING語句,但總是得到多行返回。
我有代碼處理WEBNO值,但不是NULL,甚至沒有考慮到IsDiscontinued字段。有沒有一種簡潔的方式來解析這個問題,或者更好的方法來處理這類問題?
你先生,是我的英雄。這是完美的! – MadHenchbot