我正在尝试制作一个TSQL语句,它将对专辑和艺术家进行分组并按艺术家名称排序。每首曲目都包含所有带有专辑和艺术家姓名的ID3数据。当某些专辑有多个艺术家时,排序顺序会搞砸。
如果艺术家名称不匹配但专辑名称不合适,我如何有条理地将艺术家分组为“群星艺术家”?
这是我简化的TSQL语句:
SELECT songid, artist, album, tracknumber
FROM mp3
ORDER BY artist, album, tracknumber
如果重要的话,这就是我正在使用的Microsoft SQL Server。
提前感谢您的时间。
答案 0 :(得分:3)
我没有对此进行测试,但总体思路应该是显而易见的......
用于AlbumArtist字段的相同表达式可用于分组。
WITH
VariousArtistsCTE
AS
(SELECT
album,
CASE WHEN
COUNT(DISTINCT Artist) = 1
THEN
0
ELSE
1
END AS VariousArtists
FROM mp3
GROUP BY album)
SELECT
songid,
artist AS TrackArtist,
album,
tracknumber
CASE WHEN va.VariousArtists = 1 THEN 'Various Artists'
ELSE artist END As AlbumArtist
FROM
mp3
LEFT OUTER JOIN
VariousArtistsCTE va
ON mp3.Album = va.Album