Rank: Guest
Medals: Groups: Registered, Administrators
Joined: 3/22/2010 Posts: 7 Points: 369
Thanks: 0 times Was thanked: 0 time(s) in 0 post(s)
|
BB კოდი:USE tempdb; GO CREATE TABLE dbo.Products ( ProductID INT PRIMARY KEY, Name NVARCHAR(255) NOT NULL UNIQUE /* other columns */ ); INSERT dbo.Products VALUES (1, N'foo'), (2, N'bar'), (3, N'kin'); CREATE TABLE dbo.OrderDetails ( OrderID INT, ProductID INT NOT NULL FOREIGN KEY REFERENCES dbo.Products(ProductID), Quantity INT /* other columns */ ); INSERT dbo.OrderDetails VALUES (1, 1, 1), (1, 2, 2), (2, 1, 1), (3, 3, 1);
DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX); SET @columns = N''; SELECT @columns += N', p.' + QUOTENAME(Name) FROM (SELECT p.Name FROM dbo.Products AS p INNER JOIN dbo.OrderDetails AS o ON p.ProductID = o.ProductID GROUP BY p.Name) AS x; SET @sql = N' SELECT ' + STUFF(@columns, 1, 2, '') + ' FROM ( SELECT p.Name, o.Quantity FROM dbo.Products AS p INNER JOIN dbo.OrderDetails AS o ON p.ProductID = o.ProductID ) AS j PIVOT ( SUM(Quantity) FOR Name IN (' + STUFF(REPLACE(@columns, ', p.[', ',['), 1, 1, '') + ') ) AS p;'; PRINT @sql; EXEC sp_executesql @sql;
-- SCRIPT RESULT SELECT p.[foo], p.[bar], p.[kin] FROM ( SELECT p.Name, o.Quantity FROM dbo.Products AS p INNER JOIN dbo.OrderDetails AS o ON p.ProductID = o.ProductID ) AS j PIVOT ( SUM(Quantity) FOR Name IN ([foo],[bar],[kin]) ) AS p;
|
|
Apex ltd. http://www.apex.ge
|