У меня есть простой запрос как это..
USE AdventureWorks;
GO
SELECT DaysToManufacture, AVG(StandardCost) AS AverageCost
FROM Production.Product
GROUP BY DaysToManufacture;
DaysToManufacture AverageCost
0 5.0885
1 223.88
2 359.1082
4 949.4105
Простой центр дает мне
SELECT 'AverageCost' AS Cost_Sorted_By_Production_Days,
[0], [1], [2], [3], [4]
FROM
(SELECT DaysToManufacture, StandardCost
FROM Production.Product) AS SourceTable
PIVOT
(
AVG(StandardCost)
FOR DaysToManufacture IN ([0], [1], [2], [3], [4])
) AS PivotTable;
Дает мне
Cost_Sorted_By_Production_Days 0 1 2 3 4
AverageCost 5.0885 223.88 359.1082 NULL 949.4105
Но значения в запросе центра являются hardcode.. Я хочу получить те значения от подзапроса..
select DaysToManufacture FROM Production.Product GROUP BY DaysToManufacture;
Но центр не позволяет мне получить значения от подзапроса, Есть ли какой-либо способ сделать это кроме записи динамично сгенерированного запроса?
Нет. Это можно сделать только с помощью динамического запроса. Мне тоже было бы интересно узнать, есть ли такой способ.
Есть несколько примеров, которые быстрый поиск в Google нашел, используя COALESCE
для создания списка столбцов. Однако я предпочитаю создавать список столбцов с помощью STUFF
. Однако я нашел эту статью об использовании CTE's и динамических поворотных точек, которая также может быть полезной