仅显示没有默认类别的项目

时间:2017-05-30 18:35:12

标签: sql sql-server

我有一个具有这种结构的表。

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

3 个答案:

答案 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