选择所有列,但在某些列上执行except语句

时间:2016-09-07 14:25:51

标签: sql-server tsql

我有一张临时表#TempJoinTable

此临时表中有两个字段PRODUCT_FAM_IDPRODUCT_ID,还有另外两个字段MANDATORY_CDDISPLAY_CD

基本上,我有一个存储在另一个临时表中的产品列表。其中一个product_fam_id / product_id组合已经过全面测试,因此此产品组合的行和记录(例如'591'/'103')应与我在'要检查的产品中存储的其他组合完全相同'诱惑力。唯一不同的是product_fam_id和product_id值,当然

所以我尝试了以下内容,但我对SQL很新,有点卡住了。欢迎任何建议

 create table #TempProductsToCheck
(
    ProductFamilyID char(10) NULL,
    ProductID char(10) NULL
)

insert into #TempProductsToCheck (ProductFamilyID, ProductID) values
('591', '98'),
('591', '99'),
('591', '101'),
('591', '102'),
('502', '101'),
('502', '102'),
('591', '100'),
('591', '103'),
('502', '103')

主#TempJoinTable包含产品字段,mandatory_cd和display_cd

select distinct *
from #TempJoinTable
where (product_family_id, product_id) in (select product_family_id, product_id
                                          from #TempProductsToCheck)
and where exists (select distinct MANDATORY_CD, DISPLAY_CD
from #TempJoinTable)

except

select distinct *
from #TempJoinTable
where (product_family_id, product_id) in ('591', '103')
and where exists (select distinct MANDATORY_CD, DISPLAY_CD
from #TempJoinTable)

我认为如果我只想返回mandatory_cd和display_cd字段,这可以很容易地完成,但我想从#TempJoinTable(其他2个产品字段)返回所有字段。

我知道存在位的位置是错误的,但我无法弄清楚还有哪些选项可以尝试

0 个答案:

没有答案