超级难题(仅对我而言)(200分)

  • 主题发起人 主题发起人 seeme0526
  • 开始时间 开始时间
S

seeme0526

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是:dxDBGrid表格进行查询分析。
现在有个问题:
表中的一条记录的组成是车皮号,规格型号,收货单位,发出时间……。
因为存在一个车皮同时装多种规格型号的情况,那么就会有多条记录车皮号相同而规格型号不同,
前台用dxDBGrid表格接收数据(主要是其排序、分组十分方便),用户需要返回的数据是发货的明细,
同时要汇总发出车皮数及重量等。如果简单地COUNT的结果肯定是错误的,真实的车皮数应该是:
select distinct 车皮号 from table1 的recordcount。
而我在dxDBGrid中的数据是通过:select * from table1 where ...... 获得的。
因为我要将结果保存为excel文件,所以必须将汇总的车皮数放置在dxDBGrid表格中的SummaryGroup中(或其它合适位置)。
我想不到合适的方法,特向另位请教。以上若有没说清楚的地方请明示,如果嫌分少可提示,谢谢。
 
问题讲得不能明白,不过可以试一下union
 
union恐怕不行吧!
 
select count(distinct rtrim(车皮号+cast(发出日期 as varchar(12)))) from table1
这个结果放在哪儿?
 
我在查询分析器中写了如下语句,增加了一个字段d21,用来做汇总,即sum(d21)就是需要得
得车皮总数。但我的steel_sql是一个视图,10个表的结果。以下语句使用了临时表来返回数据
但实际应用中我该如何取得这个结果呢?
/*d1:序号;d20:车皮号;d4:发出日期(一段时间后车皮号可能重复);d21大于是1的为车皮号重复记录。Steel_SQL为视图*/
drop table #tmp
declare @gs int
declare @id varchar(10)
declare @cp varchar(8)
select a.d1,a.d2,a.d3,a.d4,a.d5,a.d6,a.d7,a.d8,a.d9,a.d10,a.d11,
a.d12,a.d13,a.d14,a.d15,a.d16,a.d17,a.d18,a.d19,a.d20,b.d21 as d21
into #tmp
from steel_sql a left join
(select d20,d4,count(*) as d21 from steel_sql group by d20,d4) b
on a.d20=b.d20
while (select max(d21) from #tmp)>1
begin
set @gs=(select min(d21) from #tmp where d21>1)
set @id=(select min(d1) from #tmp where d21=@gs)
set @cp=(select d20 from #tmp where d1=@id)
update #tmp set d21=1 where d21=@gs and d1=@id
update #tmp set d21=0 where d21=@gs and d1<>@id and d20=@cp
end
select * from #tmp
 
没有人回答了吗
 
再不行就用存储过程生成临时表
 
算了,再没有回答就结贴了。
 
多人接受答案了。
 
后退
顶部