Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQL PIVOT SELECT FROM LIST (IN SELECT)

Is it possible to do a PIVOT and select list from a table, instead of using single values?

Like this (incorrect syntax error):

SELECT *
FROM (
    SELECT RepID, MilestoneID, ResultID FROM RM
) AS src
PIVOT (
    MAX(ResultID) FOR MilestoneID IN  (SELECT id FROM m) 
) AS pvt

This one compiles, but doesn't work for me:

SELECT *
FROM (
    SELECT RepID, MilestoneID, ResultID FROM RM
) AS src
PIVOT (
    MAX(ResultID) FOR MilestoneID IN  ([1], [2], [3], [4]) 
) AS pvt

PS: I do NOT want to use dynamic SQL, is there a way to do this without using dynamic SQL?

like image 908
live-love Avatar asked May 19 '11 14:05

live-love


People also ask

Can we use group by in pivot table SQL?

How Does The Pivot Operator Work? The standard way of grouping SQL data is by using the Group By clause. Let's create a query that calculates the average of the values in the total_score column of the student table, grouped by city. This is where the pivot operator comes handy.

Can PIVOT be used inside a FROM clause?

You use the PIVOT operator within your query's FROM clause to rotate and aggregate the values in a dataset. The data is pivoted based on one of the columns in the dataset. Each unique value in that column becomes its own column, which contains aggregated pivoted data.


1 Answers

If dynamic SQL is out then I'm afraid the answer is no, it can't be done. The parser needs to know the values up front to perform the pivot to columns.

like image 173
Yuck Avatar answered Oct 12 '22 12:10

Yuck