I am struggling to create a statement in a snowflake schema. I need to show a list of all products and associated tracks but also include on each line a list of songwriters names and ownership percentages eg. add one column that looks like: "Sam Smith (50.00%), Sally Simpson (25.00%), John Chan (25.00%)". My tables are:
Table: PRODUCT -PRODUCT_ID -ALBUM_ARTIST -ALBUM_TITLE
Table: SONGWRITER -SONGWRITER_ID -FIRSTNAME -LASTNAME
Table: SONG_SONGWRITER -SONGWRITER_ID -TRACK_ID -OWNERSHIP_SHARE
Table: TRACK -TRACK_ID -PRODUCT_ID -TRACK_ARTIST |TRACK_NAME
I know that I need to concatenate (and join) the SONG_SONGWRITER and SONGWRITER tables, but I am very lost due to the several joins needed for to display the products and tracks.
I have tried (and failed with):
SELECT prod.*, tra.TRACK_NAME,(SELECT (SELECT ','+ writer.FIRSTNAME +' ' +writer.LASTNAME + '(' + FORMAT(ssw.OWNERSHIP_SHARE,'P2') + ')' FROM SONGWRITER writer INNER JOIN SONG_SONGWRITER ssw ON ssw.SONGWRITER_ID=writer.SONGWRITER_ID FOR XML PATH ('')))
FROM PRODUCT prod
INNER JOIN TRACK tra
ON tra.PRODUCT_ID=prod.PRODUCT_ID
ORDER BY tra.SEQUENCE;
As for the expected result it should hopeful return something like this:
PRODUCT_ID | ALBUM_ARTIST | ALBUM_TITLE | TRACK_NAME | OWNERSHIP
1 | Meatloaf | Bat out of Hell | Bat out of Hell | Meat loaf (50%), Johnny songwriter (50%
Can anyone please help?