Я пытаюсь рассчитать медиа для продукта (SKU) в выбранном списке, но это занимает несколько часов. Я получаю список, состоящий из 4 столбцов (SKU, Branch, PriceList, Campaign), и мне нужно импортировать новую строку данных для SKU с медиа-каталогом SKU в качестве PriceList.
Для этого я импортирую уникальный список артикулов в TEMP TABLE, затем создайте CURSOR для запуска через TEMP TABLE, вычислите медиану в CURSOR.
DECLARE @c BIGINT
DECLARE @SKUVal FLOAT
DECLARE @Total int
SELECT DISTINCT SKU,
'DFLT' AS Branch,
0 AS PriceList,
NULL AS Campaign
INTO #SKU
FROM eCommerce_Pricing
WHERE PriceList > 0.0
SELECT @Total = COUNT(*) FROM #SKU
DECLARE Cur1 CURSOR LOCAL SCROLL DYNAMIC READ_ONLY
FOR
SELECT SKU
FROM #SKU
OPEN Cur1
FETCH NEXT FROM Cur1 INTO
@SKU
WHILE @@FETCH_STATUS = 0
BEGIN
SET @c = (SELECT COUNT(*) FROM eCommerce_Pricing WHERE SKU = @SKU)
SELECT @SKUVal = AVG(1.0 * PriceList)
FROM (
SELECT PriceList FROM dbo.eCommerce_Pricing
WHERE SKU = @SKU
ORDER BY PriceList
OFFSET (@c - 1) / 2 ROWS
FETCH NEXT 1 + (1 - @c % 2) ROWS ONLY
) AS x
UPDATE #SKU
SET PriceList = @SKUVal
WHERE SKU = @SKU
SET @Total = @Total-1
PRINT CAST(@Total AS VARCHAR(100)) + ' records left'
FETCH NEXT FROM Cur1 INTO
@SKU
END
DEALLOCATE Cur1
SELECT * FROM #SKU
DROP TABLE #SKU
Любая рекомендация будет принята с благодарностью. Я использую SQL Север 2014.