我需要获得仅在2013,2014销售年份的所有书籍类型,并且不应该在任何其他年份销售。所以在我的示例数据中,应该只返回'非小说'。
我试过了
select booktype where salesyear in (2013,2014)
这回归了小说和非小说,但如果销售年仅在2013年,2014年,而不是在任何其他年份,我需要获取数据
我正在使用SQL Server 2008
答案 0 :(得分:0)
您可以使用条件聚合:
SELECT booktype
FROM yourTable
GROUP BY booktype
HAVING SUM(CASE WHEN salesyear = 2013 THEN 1 ELSE 0 END) > 0 AND -- 2013 present
SUM(CASE WHEN salesyear = 2014 THEN 1 ELSE 0 END) > 0 AND -- 2014 present
SUM(CASE WHEN salesyear IN (2013, 2014) THEN 1 ELSE 0 END) = COUNT(*) -- only 2013 and
-- only 2014
答案 1 :(得分:0)
您可能希望在2013年和2014年获得所有BookType
销售额,不包括2013/2014年以外任何一年的销售额。
SELECT DISTINCT a.BookType
FROM MyTable a
JOIN MyTable b on a.BookType = b.BookType AND b.SalesYear = 2014
WHERE a.SalesYear = 2013
AND a.BookType NOT IN
(
SELECT DISTINCT BookType
FROM MyTable
WHERE SalesYear NOT IN (2013, 2014)
)