这些是我的桌子 - 我还没有创建表,我无法修改数据库中的任何内容。
桌子 - 书
BookID Name
1 Book1
2 Book2
3 Book3
4 NonAvb-Book4
5 Book5
表格 - 书籍详细信息
该表包含与书籍相关的各种属性。每行都有一个 BookID、Code(表示它是什么属性)和 Attribute。
BookID Code Value
1 100 Classic
1 101 YES
1 102 1
1 103 InStock
2 100 Modern
3 100 Classic
3 102 1
3 103 OutOfStock
4 100 Classic
4 102 3
4 103 InStock
现在,我必须为一组特定的图书 ID 创建查询,以便输出应如下所示。
输出
BookID Name IsNonAvb IsCode102SetAs1 IsCode101Active
1 Book1 N Y Y
2 Book2 N N N
3 Book3 N Y N
4 NonAvb-Book4 Y N N
5 Book5 N N N
我编写的查询以上述格式提供输出,但是当 BookDetails 表中没有数据的书籍时,该书籍 ID 不会在最终结果集中列出。
我的查询 -
SELECT b.BookID,
b.Name,
CASE WHEN LOWER(b.BookName) LIKE 'NonAvb%' THEN 'Y' ELSE 'N' END AS IsNonAvb,
CASE WHEN MAX(CASE WHEN bd.Code = 102 AND bd.Value = '1' THEN 1 ELSE 0 END) = 1 THEN 'Y' ELSE 'N' END AS IsCode102SetAs1,
CASE WHEN MAX(CASE WHEN bd.Code = 101 AND bd.Value = 'YES' THEN 1 ELSE 0 END) = 1 THEN 'Y' ELSE 'N' END AS IsCode101Active
FROM Book b
LEFT JOIN BookDDetails bd ON b.BookID = bd.BookID
WHERE b.BookID IN (1,2,3,4,5)
GROUP BY b.BookID, b.Name;
我的输出:
BookID Name IsNonAvb IsCode102SetAs1 IsCode101Active
1 Book1 N Y Y
2 Book2 N N N
3 Book3 N Y N
4 NonAvb-Book4 Y N N
Book5 丢失,因为 BookDetail 表中没有详细信息。
请帮忙。谢谢!
您的查询有一些问题