DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: covid_007
今日帖子: 4
在线用户: 7
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 freewyl (freewyl) ★☆☆☆☆ -
盒子活跃会员
2004/1/12 17:39:24
标题:
如何用TQuery的SQL实现交叉表? 浏览:2113
加入我的收藏
楼主: 如何用TQuery的SQL实现交叉表?
----------------------------------------------
读好书可以净化心灵,交挚友能够升华人生。山外有山,能人背后自有更强能人在!
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/1/12 17:46:42
1楼: 实现交叉表???什么意思啊?

----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 freewyl (freewyl) ★☆☆☆☆ -
盒子活跃会员
2004/1/12 17:51:03
2楼: 是把某些列字段变成行标题:如:
此帖子包含附件:
JPEG 图像
大小:16.6K
----------------------------------------------
读好书可以净化心灵,交挚友能够升华人生。山外有山,能人背后自有更强能人在!
作者:
男 freewyl (freewyl) ★☆☆☆☆ -
盒子活跃会员
2004/1/12 17:52:02
3楼: 如把上面的表变成如下图一样的表这样:
此帖子包含附件:
JPEG 图像
大小:29.2K
----------------------------------------------
读好书可以净化心灵,交挚友能够升华人生。山外有山,能人背后自有更强能人在!
作者:
男 freewyl (freewyl) ★☆☆☆☆ -
盒子活跃会员
2004/1/12 17:55:46
4楼: 但是把上面的语句放到TQuery的SQL里不能运行,不知道为什么?请各位帮帮忙。
----------------------------------------------
读好书可以净化心灵,交挚友能够升华人生。山外有山,能人背后自有更强能人在!
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/1/12 17:59:16
5楼: 晕 这是 SQL的存储过程 不是简单的SQL语句 所以 TQuery 无法编译!
至于DELPHI存储过程,偶一时忘记了(不好意思)等待数据库高手吧!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 freewyl (freewyl) ★☆☆☆☆ -
盒子活跃会员
2004/1/12 19:36:42
6楼: 哪位高手帮帮忙啊!!!!!!!!!!!!!!
----------------------------------------------
读好书可以净化心灵,交挚友能够升华人生。山外有山,能人背后自有更强能人在!
作者:
男 cjrb (Thinking In 魂) ★☆☆☆☆ -
盒子活跃会员
2004/1/12 21:53:17
7楼: Var
  vSQL:String;
Begin
  vSQL:='Select name,';
  vSQL:=vSQl+'sum(case subject when '''+subject+''';
 //SQL里面单引号到DELPHI变成两个单引号,你自己换一下。
 //... 
  With Query1 do
  Begin
    //...
    Open;
  End;
end;
----------------------------------------------
按此在新窗口浏览图片 充电..........
作者:
男 freewyl (freewyl) ★☆☆☆☆ -
盒子活跃会员
2004/1/12 22:30:58
8楼: 我还看不太明白,能说明白点吗?谢谢,不过我也试试看看
----------------------------------------------
读好书可以净化心灵,交挚友能够升华人生。山外有山,能人背后自有更强能人在!
作者:
男 freewyl (freewyl) ★☆☆☆☆ -
盒子活跃会员
2004/1/12 23:07:04
9楼: select @sql = left(@sql,len(@sql)-1) + ' from test group by name'

exec(@sql)

》》7楼:
上面两句怎么写啊?帮帮忙
----------------------------------------------
读好书可以净化心灵,交挚友能够升华人生。山外有山,能人背后自有更强能人在!
作者:
男 freewyl (freewyl) ★☆☆☆☆ -
盒子活跃会员
2004/1/12 23:32:04
10楼: 各位高手帮帮忙,我试了,还请高手说详细的,小弟初学这个不太明白
----------------------------------------------
读好书可以净化心灵,交挚友能够升华人生。山外有山,能人背后自有更强能人在!
作者:
男 freewyl (freewyl) ★☆☆☆☆ -
盒子活跃会员
2004/1/13 8:25:36
11楼: 快来人啊!帮帮,否则小弟就没法过年了!!!!!!!!1
----------------------------------------------
读好书可以净化心灵,交挚友能够升华人生。山外有山,能人背后自有更强能人在!
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/1/13 8:59:33
12楼: :)快过年了 高手也要去放松了!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 cjrb (Thinking In 魂) ★☆☆☆☆ -
盒子活跃会员
2004/1/13 9:10:46
13楼: 1.写sql语句:(就是单引号变成两个单引号,三个单引号变成六个单引号)
  With qry1 do
  begin
    close;
    sql.Add('Declare @sql varchar(8000)');
    sql.Add('set @sql='select name,'');
    sql.Add('select @sql=@sql+'sum(case subject when '''+subject+''' then source else 0 end) as  '');
    sql.Add('+subject+' ,'  from (select Distinct subject from test) as a');
    sql.Add('select @sql=left(@sql,len(@sql)-1)+' from test group by name'');
    sql.Add('exec(@sql)');
    Open;
  end;
2.建存储过程,再用query调用
在查询分析器:
create  procedure Proc_Select_Source
as
begin
  declare @sql varchar(8000)
  set @sql='select name,'
  select @sql=@sql+'sum(case subject when ''+subject+'' then source else 0 end) as  '
    +subject+' ,'  from (select Distinct subject from test) as a
  select @sql=left(@sql,len(@sql)-1)+' from test group by name'
  exec(@sql)
end

DELPHI中:
  With qry1 do
  begin
    close;
    sql.Add('exec Proc_Select_Source');
    Open;
  end;
----------------------------------------------
按此在新窗口浏览图片 充电..........
作者:
男 freewyl (freewyl) ★☆☆☆☆ -
盒子活跃会员
2004/2/26 23:38:52
14楼: 》》13楼的朋友
 非常感谢你上面的帮助我已经搞明白了。同时由于本人很久不能上网,没能及时道谢深感遗憾。

现在我还想问一个同类的问题就:
如有如下表:
学号   姓名   课程  成绩
1      李四   语文  85
2      王三   数学  0缺
1      李四   数学  60补
3      张三   语文  55
2      王三   语文  35作
3      张三   数学  89

把上表交变成下面的表:
学号   姓名   语文  数学
1      李四   85    60补
2      王三   35作  0缺
3      张三   55    89

通过你的指点我已经会整成如下的表:
学号   姓名   语文  数学
1      李四   85    60
2      王三   35    0
3      张三   55    89

但却没有汉字也就成了不是我的要求,我想了一个多月了却没搞出来,我都快急疯了我用的是SQL数据库,用delphi编程链接,请各位帮帮忙。

----------------------------------------------
读好书可以净化心灵,交挚友能够升华人生。山外有山,能人背后自有更强能人在!
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行89.84375毫秒 RSS