sql问题(50分)

  • 主题发起人 主题发起人 英国病人
  • 开始时间 开始时间

英国病人

Unregistered / Unconfirmed
GUEST, unregistred user!
dbase d4
QueryTmp.SQL.Add('Select Extract(Year From RIQI) as yr ,'+
'Extract(Month From RIQI) as mn,'+
'XINXITYPE,Count(*) '+
'From xinxi.dbf Group By yr,mn,XINXITYPE');
出错信息为“无效的字段名 yr”,请问为什么。
 
QueryTmp的DataBaseName定了吗?
 
是Local SQL不支持函数别名
QueryTmp.SQL.Add('Select RIQI as yr,
'+'XINXITYPE,Count(*) '+
'From xinxi.dbf Group By yr,XINXITYPE');
是可行的!
C++Builder4的Local SQL Help有示例,但他只是字段的别名。函数别名在
SQL Exporle运行,报告Local SQL没有此能力,改思路或改数据库吧! {B-(
 
>是Local SQL不支持函数别名
我试了如下没问题
QueryTmp.SQL.Add('Select Extract(Year From RIQI) as yr ,'+
'Extract(Month From RIQI) as mn,'+
'XINXITYPE '+
'From xinxi.dbf');
加上Group By子句后出错(见问题),难道没有办法吗?
 
我也试过你所说的情况,不行,看其他人的高招!!! {B-(
 
谢过沈前卫的关注
QueryTmp.SQL.Add('Select Extract(Year From RIQI) as yr ,'+
'Extract(Month From RIQI) as mn,'+
'XINXITYPE '+
'From xinxi.dbf');
这个代码确实运行无误,可能是GROUP BY 子句不支持别名。
这叫我该如何汇总月报年报呀?
难道只能做n*n次循环,或用临时表加三个字段yyyy,mm,dd才能解决,
没人遇到这种情况吗?

 
谁说Group by不支持别名,我得回帖中得yr不是别名吗???,我想只是不支持函数别名!!! {B-(
可以看看CBuilder4中Local SQL Help中就有字段得别名得Gruop by示例!
是Local SQL不支持函数别名
QueryTmp.SQL.Add('Select RIQI as yr,
// ^^^
'+'XINXITYPE,Count(*) '+
'From xinxi.dbf Group By yr,XINXITYPE');
// ^^^
是可行的!
C++Builder4的Local SQL Help有示例,但他只是字段的别名。函数别名在
SQL Exporle运行,报告Local SQL没有此能力,改思路或改数据库吧! {B-(
 
下面例子测试通过:
querytmp.sql.text := 'select extract(year from riqi) as yr, extract(month from riqi) as mn from "xinxi.dbf"';
querytmp.sql.savetofile('mysql.sql');
querytmp.sql.text := 'select yr, mn, count(*) from "mysql.sql" group by yr, mn';
querytmp.open;
...
 
多谢Another_eYes,问题解决了。
其实您以前也回答过类似的问题,这用法我正好是跟您学的,这是您的代码:
>select extract(year from out_date) as yr, extract(month from out_date) as mn, sum(special_value) from your_local_database group by yr, mn
Query1.Open;
我正考虑给你去信,你就来了。
今天我是幸运的。
 
多人接受答案了。
 
Another_eYes:真厉害!3x also!!

Local Sql居然有这中用法,但CBuilder4却没有介绍! 可恨! {B-(
 
后退
顶部