• Here is one that use partitions:

    USE AdventureWorks2012;

    GO

    SELECT SalesOrderID, ProductID, OrderQty

    ,SUM(OrderQty) OVER(PARTITION BY SalesOrderID) AS Total

    ,CAST(1. * OrderQty / SUM(OrderQty) OVER(PARTITION BY SalesOrderID)

    *100 AS DECIMAL(5,2))AS "Percent by ProductID"

    FROM Sales.SalesOrderDetail

    WHERE SalesOrderID IN(43659,43664);

    GO