Adjust how Data is Returned in Table

  • 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:

    [Code="plain"]

    Table_NameLookup Table Value

    Project PhaseBuild

    Project PhaseClosure

    Project PhaseImplementation

    Project PhaseInitiate

    Project PhasePlan

    Project PhaseTransition

    Project StatusCancelled

    Project StatusComplete

    Project StatusIn Progress

    Project StatusLogged

    Project StatusOn Hold

    [/code]

    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

  • Read up on the PIVOT keyword.

    Gail Shaw
    Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
    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
  • 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:

    [Code="plain"]

    Table_NameLookup Table Value

    Project PhaseBuild

    Project PhaseClosure

    Project PhaseImplementation

    Project PhaseInitiate

    Project PhasePlan

    Project PhaseTransition

    Project StatusCancelled

    Project StatusComplete

    Project StatusIn Progress

    Project StatusLogged

    Project StatusOn Hold

    [/code]

    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.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

  • 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 PhaseProject Status

    ---------------------------

    BuildCancelled

    ClosureComplete

    ImplementationIn Progress

    InitiateLogged

    PlanOn Hold

    Transition

    I appreciate your feedback.

    Cheers,

    Wayne

  • 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


    My mantra: No loops! No CURSORs! No RBAR! Hoo-uh![/I]

    My thought question: Have you ever been told that your query runs too fast?

    My advice:
    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?
    The path of least resistance can be a slippery slope. Take care that fixing your fixes of fixes doesn't snowball and end up costing you more than fixing the root cause would have in the first place.

    Need to UNPIVOT? Why not CROSS APPLY VALUES instead?[/url]
    Since random numbers are too important to be left to chance, let's generate some![/url]
    Learn to understand recursive CTEs by example.[/url]
    [url url=http://www.sqlservercentral.com/articles/St

  • 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

Viewing 6 posts - 1 through 5 (of 5 total)

You must be logged in to reply to this topic. Login to reply