数量大于 1 时不显示空值



我对sql还很陌生,如果这看起来真的很简单,我很抱歉。

我很难详细说明这个问题,也不确定该使用什么功能。

我有一个包含产品ID的表(a列(,如果该产品ID有不同的选项(小、中、大或10厘米、20厘米、30厘米或蓝色、黑绿色等(,则会填充另一列(b列(,提供属性产品ID。不幸的是,列有时会提供一个空值,即使你必须选择一个属性(即,你不能说你不想要一个大小或颜色(。

我试图创建的是一个视图,如果只有1个选项(b列将始终为NULL(,则显示该行,如果有要显示的选项(排除b列中的任何NULL值(,则也显示该行

这是我使用的数据的一个例子,你可以在底部附近看到1964&1980具有属性ID,但没有其他NULL值;7880同时具有NULL和属性ID。

Products_ID AttributeID
7487
7487 7487-19341
7880 7880-19347
7880
1954
1954 1954-9318
7246
7246 7246-18205
2313
4861
6474
6756
6960
6960 6960-18463
5919
5919 5919-14569
947
2320
2320 2320-3561
7742
3070
3070 3070-17697
7702
1964 1964-2469-2475
2869
2869 2869-14506
1980 1980-2412-5795
6783
6783 6783-18310
7816
1815
1815 1815-1667

如果我理解正确,如果表中没有产品的其他值,那么您只需要NULL值。如果是:

select t.*
from t
where t.attributeid is not null or
not exists (select 1
from t tt2
where t2.productid = t.productid and
t2.attributeid is not null
);

如果每个产品最多有一个非空属性,您也可以使用聚合:

select productid, max(attributeid)
from t
group by productid;
SELECT T.*
FROM [test].[dbo].[Stock] as t
where t.[product_attribute_combo] <> '' or
not exists (select 1
from [test].[dbo].[Stock] as t2
where t2.[products_id] = t.[products_id] and
t2.[product_attribute_combo] <> ''
);
GO

相关内容

  • 没有找到相关文章

最新更新