Za pomocą PIVOT można np. tak:
----------------------------------------------------------------
-- Generowanie przykładowych danych
----------------------------------------------------------------
declare @OITW table(ItemCode varchar(30), WhsCode varchar(30), OnHand money);
declare @OITM table(ItemCode varchar(30), ItemName varchar(30), BWeight1 money);
insert into @OITW(ItemCode, WhsCode, OnHand) values ('002-1308', 'MKTP', 10)
insert into @OITW(ItemCode, WhsCode, OnHand) values ('002-1308', 'MRAK', 20)
insert into @OITW(ItemCode, WhsCode, OnHand) values ('002-1308', 'MZMSR', 30)
insert into @OITW(ItemCode, WhsCode, OnHand) values ('002-1308', 'MZPAGO', 40)
insert into @OITM(ItemCode, ItemName, BWeight1) values ('002-1308', 'Jakiś towar', 12.025)
----------------------------------------------------------------
-- Właściwe zapytanie
----------------------------------------------------------------
select pvt.ItemCode, B.ItemName,
pvt.MKTP MKTPOnHand,
pvt.MKTP * B.BWeight1 MKTPTotalWeight,
pvt.MRAK MRAKOnHand,
pvt.MRAK * B.BWeight1 MRAKTotalWeight,
pvt.MZMSR MZMSROnHand,
pvt.MZMSR * B.BWeight1 MZMSRTotalWeight,
pvt.MZPAGO MZPAGOOnHand,
pvt.MZPAGO * B.BWeight1 MZPAGOTotalWeight
from @OITW A
pivot(sum(A.OnHand) for A.WhsCode in (MKTP, MRAK, MZMSR, MZPAGO)) pvt
inner join @OITM B on (B.ItemCode = pvt.ItemCode)