|
|
|
Grasshopper
      
Group: General Forum Members
Last Login: Sunday, October 21, 2012 10:38 PM
Points: 13,
Visits: 31
|
|
Hi,
Messing around withn SQL queries on a Sunday, so I have another question (posted my fist one this morning). This time, its about the way the data is set out in the returned Table. I am working with SQL Server 2008 R2 and using Microsoft SQL Management Studio. So I'm looking at the way the table is displayed when I execute my query.
The query in question is pulling Lookup Table names and values from the Project Server 2010 ProjectServer_Published database. The query is listed below:
USE ProjectServer_Published
SELECT l.LT_NAME AS Table_Name, MSP_LOOKUP_TABLE_VALUES_PUBLISHED_VIEW.LT_VALUE_TEXT AS 'Lookup Table Value' FROM dbo.MSP_LOOKUP_TABLES_PUBLISHED_VIEW l INNER JOIN dbo.MSP_LOOKUP_TABLE_VALUES_PUBLISHED_VIEW ON l.LT_UID = MSP_LOOKUP_TABLE_VALUES_PUBLISHED_VIEW.LT_UID WHERE l.LT_NAME = 'Project Status' OR l.LT_NAME = 'Project Phase' ORDER BY LT_NAME, 'Lookup Table Value'
The result of this query is:
Table_Name Lookup Table Value Project Phase Build Project Phase Closure Project Phase Implementation Project Phase Initiate Project Phase Plan Project Phase Transition Project Status Cancelled Project Status Complete Project Status In Progress Project Status Logged Project Status On Hold
Is there a way to change the query so that I can have each 'Table_Name' displayed as the column header and the values displayed in the column below each Table_Name?
Any suggestions on how I would go about doing this would be appreciated.
Cheers,
Wayne
|
|
|
|
|
SSC-Dedicated
           
Group: General Forum Members
Last Login: Today @ 4:15 PM
Points: 37,651,
Visits: 29,903
|
|
Read up on the PIVOT keyword.
Gail Shaw Microsoft Certified Master: SQL Server 2008, MVP SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability
We walk in the dark places no others will enter We stand on the bridge and no one may pass
|
|
|
|
|
SSC-Dedicated
           
Group: General Forum Members
Last Login: Today @ 9:57 PM
Points: 32,893,
Visits: 26,771
|
|
wwalkerbout (9/16/2012)
Hi, Messing around withn SQL queries on a Sunday, so I have another question (posted my fist one this morning). This time, its about the way the data is set out in the returned Table. I am working with SQL Server 2008 R2 and using Microsoft SQL Management Studio. So I'm looking at the way the table is displayed when I execute my query. The query in question is pulling Lookup Table names and values from the Project Server 2010 ProjectServer_Published database. The query is listed below: USE ProjectServer_Published
SELECT l.LT_NAME AS Table_Name, MSP_LOOKUP_TABLE_VALUES_PUBLISHED_VIEW.LT_VALUE_TEXT AS 'Lookup Table Value' FROM dbo.MSP_LOOKUP_TABLES_PUBLISHED_VIEW l INNER JOIN dbo.MSP_LOOKUP_TABLE_VALUES_PUBLISHED_VIEW ON l.LT_UID = MSP_LOOKUP_TABLE_VALUES_PUBLISHED_VIEW.LT_UID WHERE l.LT_NAME = 'Project Status' OR l.LT_NAME = 'Project Phase' ORDER BY LT_NAME, 'Lookup Table Value'
The result of this query is: Table_Name Lookup Table Value Project Phase Build Project Phase Closure Project Phase Implementation Project Phase Initiate Project Phase Plan Project Phase Transition Project Status Cancelled Project Status Complete Project Status In Progress Project Status Logged Project Status On Hold
Is there a way to change the query so that I can have each 'Table_Name' displayed as the column header and the values displayed in the column below each Table_Name? Any suggestions on how I would go about doing this would be appreciated. Cheers, Wayne
Not sure what you want for an output on this, Wayne. Could you post your result above as you'd actualy like to see it?
--Jeff Moden "RBAR is pronounced "ree-bar" and is a "Modenism" for "Row-By-Agonizing-Row".
First step towards the paradigm shift of writing Set Based code: Stop thinking about what you want to do to a row... think, instead, of what you want to do to a column."
For better, quicker answers on T-SQL questions, click on the following... http://www.sqlservercentral.com/articles/Best+Practices/61537/
For better answers on performance questions, click on the following... http://www.sqlservercentral.com/articles/SQLServerCentral/66909/
|
|
|
|
|
Grasshopper
      
Group: General Forum Members
Last Login: Sunday, October 21, 2012 10:38 PM
Points: 13,
Visits: 31
|
|
Hi Gail, Jeff,
Gail: Thanks for the tip. Pivoting the data certainly sounds like what I am after. I'll take a look at that behavior.
Jeff: The result set I would like is as follows:
Project Phase Project Status ------------- -------------- Build Cancelled Closure Complete Implementation In Progress Initiate Logged Plan On Hold Transition
I appreciate your feedback.
Cheers,
Wayne
|
|
|
|
|
SSCrazy
      
Group: General Forum Members
Last Login: Today @ 8:01 PM
Points: 2,340,
Visits: 3,163
|
|
How about something like this?
;WITH PriorQueryResults AS ( SELECT Table_Name='Project Phase', [Lookup Table Value]= 'Build' UNION ALL SELECT 'Project Phase','Closure' UNION ALL SELECT 'Project Phase','Implementation' UNION ALL SELECT 'Project Phase','Initiate' UNION ALL SELECT 'Project Phase','Plan' UNION ALL SELECT 'Project Phase','Transition' UNION ALL SELECT 'Project Status','Cancelled' UNION ALL SELECT 'Project Status','Complete' UNION ALL SELECT 'Project Status','In Progress' UNION ALL SELECT 'Project Status','Logged' UNION ALL SELECT 'Project Status','On Hold' ), AddRowNum AS ( SELECT Table_Name, [Lookup Table Value] ,n=ROW_NUMBER() OVER (PARTITION BY Table_Name ORDER BY [Lookup Table Value]) FROM PriorQueryResults ) SELECT [Project Phase]=MAX(CASE Table_Name WHEN 'Project Phase' THEN [Lookup Table Value] ELSE '' END) ,[Project Status]=MAX(CASE Table_Name WHEN 'Project Status' THEN [Lookup Table Value] ELSE '' END) FROM AddRowNum GROUP BY n
No loops! No CURSORs! No RBAR! Hoo-uh!
INDEXing a poor-performing query is like putting sugar on cat food. Yeah, it probably tastes better but are you sure you want to eat it?
Need to UNPIVOT? Why not CROSS APPLY VALUES instead? Since random numbers are too important to be left to chance, let's generate some! Are you too recursively challenged? Splitting strings based on patterns can be fast!
|
|
|
|
|
Grasshopper
      
Group: General Forum Members
Last Login: Sunday, October 21, 2012 10:38 PM
Points: 13,
Visits: 31
|
|
Hi Dwain,
Thanks very much for going to the trouble of setting this all out for me. I'm very new (well, very rusty after 15 years of non-use), to playing with SQL Queries again and any such help as this is a big step forward for me.
Very much appreciated. I'll test it out with my scenario when I get to the office tomorrow.
Cheers,
Wayne
|
|
|
|