条件TSQL分组
我正在尝试制作一个TSQL语句,将专辑和艺术家分组,并按艺术家姓名排序。每首曲目都有带有唱片集和艺术家姓名的所有ID3数据。当某些专辑有多个艺术家时,排序顺序就会混乱 当艺术家名称不匹配但专辑名称匹配时,我如何有条件地将艺术家分组为“各种艺术家” 以下是我的简化TSQL语句:条件TSQL分组,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在尝试制作一个TSQL语句,将专辑和艺术家分组,并按艺术家姓名排序。每首曲目都有带有唱片集和艺术家姓名的所有ID3数据。当某些专辑有多个艺术家时,排序顺序就会混乱 当艺术家名称不匹配但专辑名称匹配时,我如何有条件地将艺术家分组为“各种艺术家” 以下是我的简化TSQL语句: SELECT songid, artist, album, tracknumber FROM mp3 ORDER BY artist, album, tracknumber 如果重要的话,这就是我工作的Microsof
SELECT songid, artist, album, tracknumber
FROM mp3
ORDER BY artist, album, tracknumber
如果重要的话,这就是我工作的Microsoft SQL Server
提前感谢您的时间。我还没有测试过这一点,但总体思路应该是显而易见的 AlbumArtister字段中使用的表达式可用于分组
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
我假定您是sql server 2008及更高版本?我是否必须将其作为存储过程传递,或者是否有方法将其作为合并选择执行?谢谢你的回复。这非常有帮助。您可以按原样执行它,作为select语句。CTE(
WITH..
需要SQL 2005或更高版本,如果前面有SQL,则需要在WITH
关键字前面添加分号。