Hirdetés

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

  • nyunyu
    félisten

    Sziasztok, segítséget szeretnék kérni:

    Van két táblám:

    Project tábla
    projectID
    projectName

    ProjectCost tábla
    projectID
    costCategory
    cost

    Hogy tudok ebből egy olyan lekérdezést készíteni, ahol a project neve mellett felsorolásra kerülnek (külön oszlopokban) a kategóriánkénti költségek.



    Fontos, hogy egy projecthez több azonos kategóriájú költség sor is tartozhat, ezek összegének kéne szerepelni a lekérdezésben.

    Sorok oszlopokká forgatásához a PIVOT függvény kell, de azt nem minden DB kezelő ismeri.

    Szintaxisa valahogy így néz ki:

    SELECT p.projectName, pc.costCategory, pc.cost
    FROM Project p
    LEFT JOIN ProjectCost pc
    ON pc.projectID=p.projectID
    PIVOT(
    SUM(pc.cost) sum
    FOR(pc.costCategory)
    IN('Cost category1', 'Cost category2', 'Cost category3', 'Cost category4')
    )
    ORDER BY p.projectName;

    Gyakorlatilag a FOR-nál megadott costCategory mező értékkészletét válogatja szét, és csinál belőlük új oszlopokat az IN-nél megadott sorrendben, és ezekbe az oszlopokba teszi a FOR előtti oszlopfüggvény értékét.

    PIVOT()-on belül sehol nem említett oszlopok (projectName) pedig maradnak úgy ahogy van.

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