Я не уверен, как вы получаете данные от вызова функции.Основываясь на ваших требованиях, я создал таблицу и вставил предоставленные вами данные.
CREATE TABLE TESTPRICE
(PriceListId INT, ItemId INT, Stock INT, PriceIT DECIMAL(10,2),
PriceES DECIMAL(10,2), PriceAT DECIMAL(10,2), OriginPriceListId INT)
INSERT INTO TESTPRICE VALUES
(28, 25760 , 51 , 46.76 , 49.20 , 44.49 , 301874),
(36, 25760 , 51 , 56.76 , 59.20 , 54.49 , 301874),
(28, 25761 , 4 , 45.66 , 48.26 , 43.57 , 301875),
(36, 25761 , 4 , 55.66 , 58.26 , 53.57 , 301875),
(28, 25763 , 100 , 47.97 , 50.57 , 45.70 , 301877),
(36, 25763 , 100 , 57.97 , 60.57 , 55.70 , 301877)
Исходя из ваших требований, я развернул записи, каждая для IT, ES и AT.
with cte1 as(
SELECT pvt.ItemId, pvt.Stock, pvt.OriginPriceListId, pvt.[28] AS 'PriceIT_28', pvt.[36] as 'PriceIT_36'
FROM(SELECT ItemId, Stock, OriginPriceListId,PriceIT,PriceListId FROM TestPrice) AS t PIVOT (min (PriceIT) FOR PriceListId IN ( [28],[36])) AS pvt),
cte2 as(
SELECT pvt.ItemId, pvt.Stock, pvt.OriginPriceListId, pvt.[28] AS 'PriceAT_28', pvt.[36] as 'PriceAT_36'
FROM(SELECT ItemId, Stock, OriginPriceListId,PriceAT,PriceListId FROM TestPrice) AS t PIVOT (min (PriceAT) FOR PriceListId IN ( [28],[36])) AS pvt),
cte3 as(
SELECT pvt.ItemId, pvt.Stock, pvt.OriginPriceListId, pvt.[28] AS 'PriceES_28' , pvt.[36] 'PriceES_36'
FROM(SELECT ItemId, Stock, OriginPriceListId,PriceES,PriceListId FROM TestPrice) AS t PIVOT (min (PriceES) FOR PriceListId IN ( [28],[36])) AS pvt)
SELECT DISTINCT a.ItemId, a.Stock, a.OriginPriceListId, PriceIT_28, PriceES_28, PriceAT_28, PriceIT_36, PriceES_36, PriceAT_36
FROM cte1 a join cte2 b ON a.ItemId=b.ItemId
JOIN cte3 c ON b.ItemId=c.ItemId
Используя приведенный выше запрос, я получаю желаемый результат.Дайте мне знать, если у вас есть какие-либо проблемы с пониманием.
ItemId Stock OriginPriceListId PriceIT_28 PriceES_28 PriceAT_28 PriceIT_36 PriceES_36 PriceAT_36
25760 51 301874 46.76 49.20 44.49 56.76 59.20 54.49
25761 4 301875 45.66 48.26 43.57 55.66 58.26 53.57
25763 100 301877 47.97 50.57 45.70 57.97 60.57 55.70