查询结果Query1:
结构:ProdName, Qty, Je
产品一 25 36
产品二 80 250
查询结果Query2:
结构: ProdName Size Qty
产品一 M 10
产品一 S 15
产品二 M 30
产品二 S 50
我建了一个表,如何根据上面两个查询结果中的PRODNAME,生成下面的结果,我只想用DELPHI语句写。
结构:ProdName QtyTotal Je M S
产品一 25 36 10 15
产品二 80 250 30 50
结构:ProdName, Qty, Je
产品一 25 36
产品二 80 250
查询结果Query2:
结构: ProdName Size Qty
产品一 M 10
产品一 S 15
产品二 M 30
产品二 S 50
我建了一个表,如何根据上面两个查询结果中的PRODNAME,生成下面的结果,我只想用DELPHI语句写。
结构:ProdName QtyTotal Je M S
产品一 25 36 10 15
产品二 80 250 30 50
解决方案 »
- 关于hook一段汇编代码的问题
- 我用acess建立了个表 里面有两个字段 一个是'id'一个是'picpath'后者里面存放了图片的路径!我如何根据id这个字段里面的内容显示图片!也
- 关于网络版的解释???
- 请问高手!!怎么样获得本机的DNS??
- 谁有当年的Microsoft Pascal 1.0的
- 关于ListBox的问题
- 怎样把delphi里的数据库表转换为ACCESS里的表?
- 请问怎么改变NetMeeting控件的显示模式 急!在线待待
- 能在一个quickrep上先后显示两个没有明细表关系的报表吗
- 我提了两个问题都没人给我解决。哎!
- 关于隐藏系统进程的问题,欢迎大家灌水~欢迎大家灌水~欢迎大家灌水~欢迎大家灌水~欢迎大家灌水~欢迎大家灌水~欢迎大家灌水~
- 很菜的问题:如何制作和DBNavigator相同功能的按纽啊?
ProdName char (20) null,
Qty int null,
Je int null
)
insert into tb1
select '产品一' , 25, 36
union
select '产品二' , 80, 250create table tb2 (
ProdName char (20) null,
[Size] char(10) null,
Qty int null
)
insert into tb2
select '产品一', 'M', 10
union
select '产品一', 'S', 15
union
select '产品二', 'M', 30
union
select '产品二', 'S' , 50查询
select a.ProdName, a.Qty as QtyTotal, a.je,
(select Qty from tb2 where ProdName = a.ProdName and [size] = 'M' ) as M,
(select Qty from tb2 where ProdName = a.ProdName and [size] = 'S' ) as S
from tb1 as a查询结果:
产品一 25 36 10 15
产品二 80 250 30 50
delphi 程序
var
sql: String;
sql := 'select a.ProdName, a.Qty as QtyTotal, a.je,
(select Qty from tb2 where ProdName = a.ProdName and [size] = 'M' ) as M,
(select Qty from tb2 where ProdName = a.ProdName and [size] = 'S' ) as S
from tb1 as a'ADOQuery1.close;
ADOQuery1.sql.clear;
ADOQuery1.sql.add(sql);
ADOQuery1.open;
可以用如下代码,SQL Server 2000测试通过Select T1.ProdName as ProdName, T1.Qty as QtyTotal, T1.Je as Je, T2.Qty as M, T3.Qty as S
from TABLE1 T1 join TABLE2 T2 on T1.ProdName = T2.ProdName join TABLE2 T3 on T2.ProdName = T3.ProdName and T2.Size < T3.Size
up
meiqingsong(阿飛) 的不错了
--不用临时表,一条sql就搞定,你是什么数据库?
as
declare @sql varchar(3000)
begin
set @sql=''
set @sql='select a.*,b.M,b.S from query1 a'
set @sql=@sql+',(select prodname'
select @sql=@sql+',sum(case size when '''+size+''' then qty else 0 end)['+size+']'
from (select distinct size from query2)a
select @sql=@sql+' from query2 group by prodname)b'
set @sql=@sql+' where a.prodname=b.prodname order by a.prodname desc'
exec(@sql)
end
产品一 25 36 10 15
产品二 80 250 30 50
搞定,
as
declare @sql varchar(3000)
begin
set @sql=''
set @sql='select a.*,b.M,b.S from query1 a'
set @sql=@sql+',(select prodname'
select @sql=@sql+',sum(case size when '''+size+''' then qty else 0 end)['+size+']'
from (select distinct size from query2)a
select @sql=@sql+' from query2 group by prodname)b'
set @sql=@sql+' where a.prodname=b.prodname order by a.prodname desc'
exec(@sql)
end ProdName QtyTotal Je M S
产品一 25 36 10 15
产品二 80 250 30 50搞定,支持动态,
begin
adoprocedure1.open; 打开就行了或用 adoprocedure1.exec;
end;