pubs数据库的sql查询
如果我想为pubs数据库中的每个标题获得多个作者。可以使用pivot吗? 该表与此查询联接pubs数据库的sql查询,sql,database,pubs,Sql,Database,Pubs,如果我想为pubs数据库中的每个标题获得多个作者。可以使用pivot吗? 该表与此查询联接 SELECT CONCAT(a.au_fname,', ',a.au_lname) AS AUTHOR_NAME, t.title FROM titleauthor AS c join authors AS a ON a.au_id=c.au_id join titles t ON t.title_id=c.title_id; 这显示了具有多个标题的多个作者,但我希望将每个标题
SELECT CONCAT(a.au_fname,', ',a.au_lname) AS AUTHOR_NAME,
t.title
FROM titleauthor AS c
join authors AS a
ON a.au_id=c.au_id
join titles t
ON t.title_id=c.title_id;
这显示了具有多个标题的多个作者,但我希望将每个标题和所有作者都放在一行中
PIVOT
只有在事先知道列的情况下才起作用
如果标题的作者数量未知,则只能生成一个包含所有姓名的字符串列,例如“马克·吐温,罗伯特·路易斯·史蒂文森”。因此,对于所有名称,您总是只能得到一列。这是一个字符串聚合,不同的DBMS具有不同的功能(
GROUP\u CONCAT
,listag
,string\u AGG
等),您可以按标题进行分组。(1)提供示例数据和所需结果。(2) 用您正在使用的数据库标记问题。您正在运行哪个版本的sql?使用PIVOT时需要指定列名。如果您使用的是SQL Server 2012,则STUFF函数(带有xml)将在这里很好地工作。这些函数在SQL Server中可以识别。您想要SQL Server的答案吗?然后,您应该将问题标记为“sql server”,甚至可能是您正在使用的版本。(顺便说一句,每个SQL问题都应该这样做。)SQL Server缺少如上所述的字符串聚合函数。您必须使用STUFF和XML路径来模拟它。关于如何在stackoverflow和其他网站上实现这一点,可能有很多答案。这里有一个: