想问一个sql语句的写法或者这个需求怎么实现?谢谢大家
现在有两个表,第一个表是主表字段大概为
-- 合同信息表
create table CONTRACT_INFO
(
MAIN_DOC_ID VARCHAR2(32) not null,---主文档ID,唯一
CONTRACT_NAME VARCHAR2(256),--合同名称
STOCK_TYPE VARCHAR2(128),--采购类型
CONTRACT_COST NUMBER(16,4)---合同金额
)
--合同临时表
create table CONTRACT_TEMP
(
CONTRACT_ID VARCHAR2(32) not null,---主键 唯一,和CONTRACT_INFO中的MAIN_DOC_ID关联
KEY_WORD VARCHAR2(128),--关键字
VALUE VARCHAR2(512)---内容
)
select * from contract_info
main_doc_id contract_name stock_type contract_cost
E9B3BAC1CF8C0733482570EC002E586A 合同A 省公司统谈统签 1150 现在是这样的,我 要修改CONTRACT_INFO的字段的数值,比如我要修改一条合同信息表(CONTRACT_INFO)STOCK_TYPE
数值,将 '省公司统谈统签' 改为'地市分公司统谈统签' 但我不能修改原表中的数值,也就是不能CONTRACT_INFO,我只能取出main_doc_id,stock_type,以及它所对应的值,
插入到合同临时表中来,合同临时表就新增了一条数据。
这样 合同临时表就会
select * from contract_temp
contract_id key_word value
E9B3BAC1CF8C0733482570EC002E586A stock_type 地市分公司统谈统签
原合同信息表记录没有变。 现在我要按照stock_type来取得contract_cost的数值,如果不考虑到合同临时表,我就应该这样来写sql语句。
select distinct stock_type,sum(contract_cost) from contract_info
但这样就不是取得的真实数据,我要把修改之后的数据取出来,这个sql语句应该怎么写? 不知道我说清楚了没有,谢谢大家。
有不明白的,请加入这个群进行讨论,JAVA-ORACLE 群 2749375 谢谢大家
现在有两个表,第一个表是主表字段大概为
-- 合同信息表
create table CONTRACT_INFO
(
MAIN_DOC_ID VARCHAR2(32) not null,---主文档ID,唯一
CONTRACT_NAME VARCHAR2(256),--合同名称
STOCK_TYPE VARCHAR2(128),--采购类型
CONTRACT_COST NUMBER(16,4)---合同金额
)
--合同临时表
create table CONTRACT_TEMP
(
CONTRACT_ID VARCHAR2(32) not null,---主键 唯一,和CONTRACT_INFO中的MAIN_DOC_ID关联
KEY_WORD VARCHAR2(128),--关键字
VALUE VARCHAR2(512)---内容
)
select * from contract_info
main_doc_id contract_name stock_type contract_cost
E9B3BAC1CF8C0733482570EC002E586A 合同A 省公司统谈统签 1150 现在是这样的,我 要修改CONTRACT_INFO的字段的数值,比如我要修改一条合同信息表(CONTRACT_INFO)STOCK_TYPE
数值,将 '省公司统谈统签' 改为'地市分公司统谈统签' 但我不能修改原表中的数值,也就是不能CONTRACT_INFO,我只能取出main_doc_id,stock_type,以及它所对应的值,
插入到合同临时表中来,合同临时表就新增了一条数据。
这样 合同临时表就会
select * from contract_temp
contract_id key_word value
E9B3BAC1CF8C0733482570EC002E586A stock_type 地市分公司统谈统签
原合同信息表记录没有变。 现在我要按照stock_type来取得contract_cost的数值,如果不考虑到合同临时表,我就应该这样来写sql语句。
select distinct stock_type,sum(contract_cost) from contract_info
但这样就不是取得的真实数据,我要把修改之后的数据取出来,这个sql语句应该怎么写? 不知道我说清楚了没有,谢谢大家。
有不明白的,请加入这个群进行讨论,JAVA-ORACLE 群 2749375 谢谢大家
现在有两个表,第一个表是主表字段大概为
-- 合同信息表
create table CONTRACT_INFO
(
MAIN_DOC_ID VARCHAR2(32) not null,---主文档ID,唯一
CONTRACT_NAME VARCHAR2(256),--合同名称
STOCK_TYPE VARCHAR2(128),--采购类型
CONTRACT_COST NUMBER(16,4)---合同金额
)
--合同临时表
create table CONTRACT_TEMP
(
CONTRACT_ID VARCHAR2(32) not null,---主键 唯一,和CONTRACT_INFO中的MAIN_DOC_ID关联
KEY_WORD VARCHAR2(128),--关键字
VALUE VARCHAR2(512)---内容
)
select * from contract_info
main_doc_id contract_name stock_type contract_cost
E9B3BAC1CF8C0733482570EC002E586A 合同A 省公司统谈统签 1150现在是这样的,我 要修改CONTRACT_INFO的字段的数值,比如我要修改一条合同信息表(CONTRACT_INFO)STOCK_TYPE
数值,将 '省公司统谈统签' 改为'地市分公司统谈统签' 但我不能修改原表中的数值,也就是不能CONTRACT_INFO,我只能取出main_doc_id,stock_type,以及它所对应的值,
插入到合同临时表中来,合同临时表就新增了一条数据。
这样 合同临时表就会
select * from contract_temp
contract_id key_word value
E9B3BAC1CF8C0733482570EC002E586A stock_type 地市分公司统谈统签
原合同信息表记录没有变。现在我要按照stock_type来取得contract_cost的数值,如果不考虑到合同临时表,我就应该这样来写sql语句。
select distinct stock_type,sum(contract_cost) from contract_info
但这样就不是取得的真实数据,我要把修改之后的数据取出来,这个sql语句应该怎么写?不知道我说清楚了没有,谢谢大家。
where info.MAIN_DOC_ID=temp.CONTRACT_ID group by temp.STOCK_TYPE这样就应该能达到你的需求了怎么楼主发了2个相同的帖子
其次,合同临时表中,没有保存新的合同类型:STOCK_TYPE,而是存储了其中文名,因此你需要再将这个中文名还原为合同类型,或者你在合同临时表中,同样也记录其类型编号,而不是记录类型名(为什么你两个类似的表使用不同的方式表达?)
再者,合同被修改一次后,再一次修改又是如何处理?直接修改临时信息表还是再插入一次新记录,如果继续加记录,那么哪个算后?怎么没有时间?假设,上述问题的最后一个是更新临时表,那么在合同表中使用not exists排除合同临时表中的那部分记录,再把合同临时表相加(集合加),产生的视图作为你查询的基础,就很容易了