组合SQL行,其中列X值相等但列Y值不同(需要覆盖)

时间:2018-03-24 12:10:11

标签: mysql sql filtering

在这里完成SQL新手。我有一个任务,我应该创建一大堆表,然后在它们之间执行某些过滤。 从图片中可以看出,这些实际上是2个不同的标题(来自较大的表格,其中包含更多这些标题),但每个标题都是书籍,音频和视频副本,因此每个不同标题有3行。

有什么方法可以根据标题扫描多行,然后为每个标题返回一行,说明它是否可用作视频和音频?因此,只要在任何3行中,“available_in_audio”或“available_in_video”中的答案为是,那么“是”将覆盖在其之前或之后扫描的任何列的“否”。

例如对于3个哈利波特和密室行,我只想要一行“Available_in_Audio”为“是”,“Available_in_Video”为“是”。

If both available_as_video and available_as_audio are "No", means it's a book, if available_as_audio is "Yes" means it's an audio copy and available_as_video means it's a video copy

非常感谢你,对不起这个长期的问题感到抱歉!

1 个答案:

答案 0 :(得分:0)

试试这个

SELECT Title, 
    CASE WHEN (MAX(CASE WHEN Available_in_Audio = 'Yes' THEN 1 ELSE 0 END)) = 1 THEN 'Yes' ELSE 'No' END) AS Available_in_Audio,
    CASE WHEN (MAX(CASE WHEN Available_in_Video = 'Yes' THEN 1 ELSE 0 END)) = 1 THEN 'Yes' ELSE 'No' END) AS Available_in_Video,
FROM <YourTable>
GROUP BY TITLE