有相同结构的数据集A和B,B记录中包含一部分A的内容,要得到C=B-A,怎样用查询语句得到C? select * from b where b.id not in (select a.id from a) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select * from b where b.??id not in (select a.??id from a) select * from B minus select * from A Query_02.Close; Query_02.SQL.Clear; Query_02.SQL.Add('SELECT *' ); Query_02.SQL.Add('FROM Query_all'); Query_02.SQL.Add('Where Query_all.BxNo not in (SELECT Query_01.BxNo FROM Query_01)'); Query_02.Open;----------有问题吗?可是运行报错“Table dose not exist;Invalid object name'Query_All';Invalid object name'Query_01';”什么原因?Query_All和Query_01在次之前都open了,没问题。 Query_All,Query_01,是TQuery控件呀,应是表名 TQuery不行?实际是这样:有个产品记录表,以BXNO+DATETIME为键,每个产品(BXNO)会有多条记录(包括合格与不合格的),现在要统计产量及各项合格与不合格的量,所以多条产品记录只能作为一个产品出现,以合格的优先,记入合格量就不能再在某个不合格量中出现。怎样统计比较简单? 你也太狠了,直接就像从Query中选了?Delphi还没那么聪明。急也没用啊,你不公开表结构,谁都帮不了你。 表结构很简单:CREATE TABLE dbo.TestEnd ( BeginDateTime datetime,//测试时间 BxNo varchar(32), //产品编号 BxModel varchar(15), //产品型号 TestedTime int, //测试时间 Data1 image NULL, //测试数据)帮帮忙了,多谢了。 抱歉,太马虎了。CREATE TABLE dbo.TestEnd ( BeginDateTime datetime,//测试时间 BxNo varchar(32), //产品编号 BxModel varchar(15), //产品型号 TestedTime int, //测试时间 Data1 image NULL, //测试数据 BxResult char(2) NULL, //测试结果(代码:01合格,02、03、04...:各种不合格类型)) 不合格:select BxNo, count(*) from testend where BxResult <> '01'合格:select BxNo, count(*) from testend where BxResult = '01'还有问题吗? 每个产品可能会测试多次的(有多条记录有相同的BxNo),但产量统计里只能计为一次。count(*)不精确吧 select count(distinct(bxno)) from testend 还不行,一种bxno有合格的记录也有不合格的记录,以合格的统计优先,记入合格量就不能再在某个不合格量中出现。 你难道就不能加Where的比较语句吗?select count(distinct(bxno)) from testend where BxResult = '01' 我知道用count(distinct(bxno)) 可以正确得到总量和合格量(where BxResult = '01')。现在就是各种不合格的准确量的不到!简单的用select count(distinct(bxno)) from testend where BxResult <> '01' 得到的结果一定包含部分已经合格的产品,我问题的关键是怎样避免合格产品的重复统计,记入合格量就不能再在某个不合格量中出现。 既然总量和合格量都出来了,二者相减不就是不合格量了吗?还有为什么<>'01'里面包含合格量? 相减只能得到不合格总量,得不到'02'、'03'、'04'...的数量,我需要明细。select count(distinct(bxno)) from testend where BxResult <> '01' 只是去除了<> '01' 条件下的重复bxno,不会自动滤掉='01'的bxno.能用存储过程实现吗? 那么你在变通一下SQL语句就可以了。select BxResult, count(distinct(bxno)) from testend where bxresult <> '01' group by bxresult 难道存储过程和SQL会有区别? Delphi的IWDBGrid控件使用问题 怎樣一邊瀏覽窗口一邊獲取數據 请问有关数据库与图形的问题! 弄了个多论坛搜索,欢迎测试,呵呵 关于Tstringgrid和Tfilestream的问题[悬赏100分] 如何将基于TWinControl的组件做成透明的? invalid variant type conversion 头痛啊 正在修改XPMenu,碰到一些关于菜单的问题,请各位高手赐教 如何将olevariant存储进sqlserver的blob字段? 帮我!急!! 数据建摸工具哪些常用?从哪里得到? 折分如下字串,50分请进!!
b.??id not in (select a.??id from a)
Query_02.SQL.Clear;
Query_02.SQL.Add('SELECT *' );
Query_02.SQL.Add('FROM Query_all');
Query_02.SQL.Add('Where Query_all.BxNo not in (SELECT Query_01.BxNo FROM Query_01)');
Query_02.Open;
----------
有问题吗?可是运行报错“Table dose not exist;Invalid object name'Query_All';Invalid object name'Query_01';”
什么原因?Query_All和Query_01在次之前都open了,没问题。
实际是这样:有个产品记录表,以BXNO+DATETIME为键,每个产品(BXNO)会有多条记录(包括合格与不合格的),现在要统计产量及各项合格与不合格的量,所以多条产品记录只能作为一个产品出现,以合格的优先,记入合格量就不能再在某个不合格量中出现。
怎样统计比较简单?
急也没用啊,你不公开表结构,谁都帮不了你。
CREATE TABLE dbo.TestEnd (
BeginDateTime datetime,//测试时间
BxNo varchar(32), //产品编号
BxModel varchar(15), //产品型号
TestedTime int, //测试时间
Data1 image NULL, //测试数据
)
帮帮忙了,多谢了。
CREATE TABLE dbo.TestEnd (
BeginDateTime datetime,//测试时间
BxNo varchar(32), //产品编号
BxModel varchar(15), //产品型号
TestedTime int, //测试时间
Data1 image NULL, //测试数据
BxResult char(2) NULL, //测试结果(代码:01合格,02、03、04...:各种不合格类型)
)
select BxNo, count(*) from testend where BxResult <> '01'
合格:
select BxNo, count(*) from testend where BxResult = '01'
还有问题吗?
count(*)不精确吧
select count(distinct(bxno)) from testend where BxResult = '01'
select count(distinct(bxno)) from testend where BxResult <> '01'
得到的结果一定包含部分已经合格的产品,我问题的关键是怎样避免合格产品的重复统计,记入合格量就不能再在某个不合格量中出现。
还有为什么<>'01'里面包含合格量?
select count(distinct(bxno)) from testend where BxResult <> '01'
只是去除了<> '01' 条件下的重复bxno,不会自动滤掉='01'的bxno.能用存储过程实现吗?
select BxResult, count(distinct(bxno)) from testend where bxresult <> '01' group by bxresult