Hirdetés

Új hozzászólás Aktív témák

  • nyunyu

    félisten

    válasz Louro #4611 üzenetére

    Ez így nem jó, mivel ő az egyes costCategory alá tartozó tételek összegét külön-külön oszlopban szeretné látni.

    Meg lehet csinálni PIVOT() nélkül is, oszloponként külön JOINnal:
    SELECT p.projectName 'Project Name',
    SUM(pc1.cost) 'Cost category1',
    SUM(pc2.cost) 'Cost category2',
    SUM(pc3.cost) 'Cost category3',
    SUM(pc4.cost) 'Cost category4'
    FROM Project p
    LEFT JOIN ProjectCost pc1
    ON pc1.projectID=p.projectID
    AND pc1.costCategory='Cost category1'
    LEFT JOIN ProjectCost pc2
    ON pc2.projectID=p.projectID
    AND pc2.costCategory='Cost category2'
    LEFT JOIN ProjectCost pc3
    ON pc3.projectID=p.projectID
    AND pc3.costCategory='Cost category3'
    LEFT JOIN ProjectCost pc4
    ON pc4.projectID=p.projectID
    AND pc4.costCategory='Cost category4'
    GROUP BY p.projectName
    ORDER BY p.projectName;

    Itt az egyes JOINoknál szűröm a costCategory értékét, hogy az adott oszlopban melyik értékhez tartozó tételek látszanak (amiket aztán szummázunk).

    PIVOT()-tal rövidebben, tömörebben lehet ugyanezt megcsinálni, viszont a mit írjak a FOR és IN részekhez megértése elsőre nehéz lehet.

Új hozzászólás Aktív témák