Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
pubs数据库的sql查询_Sql_Database_Pubs - Fatal编程技术网

pubs数据库的sql查询

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; 这显示了具有多个标题的多个作者,但我希望将每个标题

如果我想为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;
这显示了具有多个标题的多个作者,但我希望将每个标题和所有作者都放在一行中


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和其他网站上实现这一点,可能有很多答案。这里有一个: