我的查询未返回预期的记录数量 第一部分返回50.000条记录 第二部分(在负数下方)返回30.000 所以结论我的减去应该返回20.000记录。 只有这不会发生更多的记录被删除21.000。
- 编辑 - 计数返回更多预期的行,这些返回的记录将在以后的步骤中删除。
有人建议吗?
-- select count(*) from (
SELECT
loc.ITEM,
loc.loc
FROM ITEM_LOC loc
WHERE LOC NOT IN(101,104,107,115,116,117)
and loc.status = 'A'
and primary_supp in (select supplier from item_supplier where supp_discontinue_date >= sysdate)
-- );
minus
--; select count(*) from (
select distinct item, store from (
SELECT
siv.ITEM,
sto.store
FROM DC_CCN190_SID_VTB siv
JOIN DC_STORE_RANGING str ON siv.dpac = str.dpac
join store sto on sto.store_name_secondary = cast(str.loc as varchar2(150 byte))
where sto.store_close_date >= sysdate
union
SELECT
pim.ITEM,
sto.store
FROM dc_pim_export_vert PIM
JOIN DC_STORE_RANGING str ON PIM.dpac = str.dpac
join store sto on sto.store_name_secondary = cast(str.loc as varchar2(150 byte))
where PIM.artikel_type_lms = 'D1'
and sto.store_close_date >= sysdate
)
计数返回50.000
select count(*) from (
SELECT
loc.ITEM,
loc.loc
FROM ITEM_LOC loc
WHERE LOC NOT IN(101,104,107,115,116,117)
and loc.status = 'A'
and primary_supp in (select supplier from item_supplier where supp_discontinue_date >= sysdate));
计数返回30.000
select count(*) from (
select distinct item, store from (
SELECT
siv.ITEM,
sto.store
FROM DC_CCN190_SID_VTB siv
JOIN DC_STORE_RANGING str ON siv.dpac = str.dpac
join store sto on sto.store_name_secondary = cast(str.loc as varchar2(150 byte))
where sto.store_close_date >= sysdate
union
SELECT
pim.ITEM,
sto.store
FROM dc_pim_export_vert PIM
JOIN DC_STORE_RANGING str ON PIM.dpac = str.dpac
join store sto on sto.store_name_secondary = cast(str.loc as varchar2(150 byte))
where PIM.artikel_type_lms = 'D1'
and sto.store_close_date >= sysdate
);
所以减号应该返回20.000吧?
答案 0 :(得分:5)
A = 50000. B = 30000. A - B = 21000.什么是B-A?我期待1000.也就是说,B中有1000条未包含在A中的记录。在一个简单的例子中,
A返回4条记录 吉姆 短发 玛丽 萨曼莎
B返回3条记录 短发 玛丽 约瑟芬
A - B返回2条记录: 吉姆 萨曼莎
B - A返回1条记录: 约瑟芬
答案 1 :(得分:0)
使用
select count(*)
两个查询中的并将结果与
进行比较select distinct count(*)
应该有区别!
从HERE,&#34;此外,如果table_A中有两个相同的行,并且table_B中存在相同的行,则table_A中的两行将从结果集中删除。&#34; < / p>
如果没有区别,那么只有一个解释:
MINUS是一个SQL集合操作,用于从第一个元素中选择元素 表然后删除第二个也返回的行 SELECT语句。
并非所有第二秒的行都出现在第一行中。