I want to Create a query which pivoting my data to get every Order with the total of quantity of its items,but i have a lot of items in my data and that will be Hard if i Write every item in the select Statement And every item in the PIVOT function so that I tried to apply Dynamic query on my query but i have many error so can any one help me to know whats the wrong with it? this is my query.
--VARIABLE TO HOLD Items--
DECLARE @ItemName NVARCHAR(500)
--VARIABLE TO HOLD CODE--
DECLARE @SQL NVARCHAR(MAX)
--TEMP TABLE --
CREATE #temp (COLUMNVALS NVARCHAR(500))
--INSERT DISTINCT DATES INTO TEMP TABLE--
INSERT INTO #temp
SELECT DISTINCT Item FROM
(SELECT
OtherLangDescription AS Item
FROM Warehouse.WHWorkOrderHeader
INNER JOIN
Warehouse.WHWorkOrderDetails ON Warehouse.WHWorkOrderHeader.ID = Warehouse.WHWorkOrderDetails.WHWorkOrderHeaderId
INNER JOIN
Warehouse.StockItems ON Warehouse.WHWorkOrderDetails.StockItemId = Warehouse.StockItems.Id
)
--CONCAT INTO SELECT LIST--
SET @ItemName = COALESCE(@ItemName+', ','') + '[' + Item + ']' FROM #temp
--CREATE THE SELECT STATEMENT--
SELECT @SQL = '
WITH t_PVT AS (
SELECT
Warehouse.WHWorkOrderHeader.ID
, OtherLangDescription
, Type
, Warehouse.WHWorkOrderDetails.Quantity
, Warehouse.WHWorkOrderDetails.Value
, Value*Quantity AS Total
FROM Warehouse.WHWorkOrderDetails
INNER JOIN Warehouse.WHWorkOrderHeader
ON Warehouse.WHWorkOrderDetails.WHWorkOrderHeaderId = Warehouse.WHWorkOrderHeader.ID
INNER JOIN Warehouse.Warehouse
ON Warehouse.WHWorkOrderHeader.WarehouseId = Warehouse.Warehouse.Id
INNER JOIN Warehouse.StockItems
ON Warehouse.WHWorkOrderDetails.StockItemId = Warehouse.StockItems.Id
INNER JOIN Sales.sls_Customers
ON Warehouse.WHWorkOrderHeader.CustomerId = Sales.sls_Customers.ID
)
SELECT
Warehouse.WHWorkOrderHeader.ID
, ' + Item + '
FROM t_PVT
PIVOT
(
SUM(Warehouse.WHWorkOrderDetails.Quantity)
FOR Item IN (' + Item + ') AS PVT'
--PRINT IT TO SEE WHAT IT'S DONE--
PRINT @SQL
--EXECUTE IT--
EXEC (@SQL)