我有一个具有这种结构的表。
ItemNumber | Category | DefaultCategory
---------------------------------------
1234 | Category 1 | 0
1234 | Category 2 | 1
1234 | Category 3 | 0
ABCD | Category 1 | 0
ABCD | Category 2 | 0
YZYX | Category 2 | 0
YZYX | Category 1 | 0
我需要获取所有没有默认类别的项目。所以在这个例子中我必须得到 ABCD和YZYX
任何人都可以帮助我,我的SQL应该如何? 这是我最好的尝试,但那不正确。
SELECT [ItemNumber] FROM [Navision4].[dbo].[Danmark$eShopInventCategory] WHERE DefaultCategory = 0 GROUP BY ItemNumber
答案 0 :(得分:1)
您没有聚合功能,因此您应该使用distinct(不使用不正确的分组)
然后你可以使用not in clasue和subselect
SELECT distinct ItemNumber
FROM [Navision4].[dbo].[Danmark$eShopInventCategory]
WHERE ItemNumber not in (
select ItemNumber
FROM [Navision4].[dbo].[Danmark$eShopInventCategory]
where DefaultCategory <> 0
)
答案 1 :(得分:1)
你可以使用简单的不在下面
SELECT distinct [ItemNumber] FROM [Navision4].[dbo].[Danmark$eShopInventCategory]
Where ItemNumber not in ( Select ItemNumber from [Navision4].[dbo].[Danmark$eShopInventCategory] where DefaultCategory = 1 )
答案 2 :(得分:0)
SELECT [ItemNumber] FROM [Navision4].[dbo].[Danmark$eShopInventCategory] WHERE ItemNumber not in (select ItemNumber where DefaultCategory = 1) group by ItemNumber