为什么这样的SQL语句出错?(50分)

  • 主题发起人 主题发起人 wusikai
  • 开始时间 开始时间
W

wusikai

Unregistered / Unconfirmed
GUEST, unregistred user!
我在写一个管理系统,在进行月统计的时候,写的SQL语句有错,不知道错在哪?
表的结构和部分数据:(total是在每个记录输完,我用触发器来进行求和的)
ID(int) time(int) keshi(char) beitao(int) chuangdan(int) yifu(int) total (int)
2000896 20080915 呼吸内科 2000 100 200 2300
2000897 20080916 呼吸内科 200 100 200 500
如果要求9月份的进行求和,我的SQL是:
select keshi,beitao as 被套,chuangdan as 床单,yifu as 衣服,total as 合计 where *** 后面老是写起不正确。
请大家帮个忙。
 
最好不要用WHERE语句,也不知道为什么,公司群里发过这样的话:尽量避免使用WHERE语句。我是新人,只知道这样做,也不知道为什么。希望对你有帮助。
 
time怎么用INT类型的,用CHAR的吧
 
不用WHERE,你用什么SQL查找.搞笑.


上面的问题应该不在你写出的语句中吧
 
SQL语句写全了才能判断。From xxx 在哪里?
 
结构错了吧,From 都没出现就Where了。
 
select keshi,beitao as 被套,chuangdan as 床单,yifu as 衣服,total as 合计 from 表名 where ***
 
少个from吧
 
1.没有from 子句
2.你要合计却没有合计运算
3.有sum,而有字段不是任何统计的,就需要group by 否则出错
eg:
select keshi ,sum(total) from table1 where keshi='neike' group by keshi;

select keshi ,left(time,6) as 月份 ,sum(beitao) as 被套,sum(chuangdan) as 床单,sum(yifu) as 衣服,sum(total) from table1 where left(time,6)='200809' group by keshi,left(time,6)
 
不好意思,在写个问题的时候,没写完,FROM语句是有的,SUM语句也有的。
如果从EDIT输入200809,那要取200809做月份,写到SQL里面,怎么写?
 
sql.add('select keshi ,left(time,6) as m ,sum(beitao) as b,sum(chuangdan) as c,sum(yifu) as y,sum(total) from table1 where to_char(time, ''yyyymmdd'') = ''' + edit1.text + ''' and ... group by ...');
这是Oracle的写法,别的数据库的思路也一样,关键是要看你那个time字段的类型,如果是date型的就要用函数转换一下(或者把 edit1.text 进行转换)
 
group by keshi,left(time,6)
使用什么分组是一定要加的
 
定楼上的,一定要有分组!!
 
select keshi,sum(beitao) as 被套,sum(chuangdan) as 床单,sum(yifu) as 衣服,sum(total) as 合计 from table where time>20080900 and time <20080931
GROUP ksshi
 
有sum,而有字段不是任何统计的,需要用group by ~~
 
luwm 对了...
 
我的这句肯定可以的,给分啊。不过字段time最好用DATETIME或CHAR/VARCHAR类型,还有名称不要用“time”,这个是保留字,可以用FTime或time1之类的。
 
select keshi,sum(beitao) as 被套,sum(chuangdan) as 床单,sum(yifu) as 衣服,sum(total) as 合计 from table where time between 20080900 and 20080931
GROUP BY ksshi
你把字段的类型改成楼上所说的就好了.
 
执行时很明显地会告诉你查询中一个或多个字段没有在GROUP BY子句中。这样的提示还不够 想送分直接说嘛。弟兄们心领了[:D]
 
select keshi,sum(beitao) as 被套,sum(chuangdan) as 床单,sum(yifu) as 衣服,sum(total) as 合计 from table where table.xxx='xxx' group by keshi,...
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
439
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部