求sql语句case WHEN..then end问题。。(急)

wxiaol 2007-09-12 09:51:42
我的语句
SELECT username, SUM(tichen) AS tichen, gongzi
FROM (SELECT login.username, login.gongzi,
CASE WHEN produit.tichen_type = 1 THEN sell.shulian * produit.tichen
WHEN produit.tichen_type = 0 THEN sell.shulian * sell.price * produit.tichen
END AS tichen
FROM sell INNER JOIN
produit ON sell.id_produit = produit.id INNER JOIN
login ON sell.id_login = login.id where sell.selldate >= '2007-10-01') a
GROUP BY username, gongzi

在sql 2000查询分析器测试完全通过并执行。

但是,我写在asp程序里的时候却是报错(操作符丢失),程序里用的是access数据库,难道access数据库不支持case WHEN..then end语法?郁闷中。。。。。
sql="SELECT username, SUM(tichen) AS tichen, gongzi "&_
"FROM (SELECT login.username, login.gongzi, "&_
"CASE "&_
"WHEN produit.tichen_type=1 THEN sell.shulian * produit.tichen "&_
"WHEN produit.tichen_type=0 THEN sell.shulian * sell.price * produit.tichen "&_
"END "&_
"AS tichen "&_
"FROM sell INNER JOIN "&_
"produit ON sell.id_produit = produit.id INNER JOIN "&_
"login ON sell.id_login = login.id where (sell.selldate>=#"&CDate(yy&"-"&mm&"-"&dd)&"# and sell.selldate<=#"&CDate(yy&"-"&mm&"-"&d)&"#)) a GROUP BY username,gongzi"

另外可以用access数据库文件实现我想要的结果吗?
...全文
857 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lost_queen 2007-09-12
  • 打赏
  • 举报
回复
没有用过access
不过看书的时候,书上说access的确有很多东西不支持~
wgzaaa 2007-09-12
  • 打赏
  • 举报
回复
用iif函数
http://community.csdn.net/Expert/topic/5742/5742331.xml?temp=.7485773
dawugui 2007-09-12
  • 打赏
  • 举报
回复
--上面的具体计算方法是否正确我不知道,不过方法就是把两个条件分开计算,然后合并起来.
sunhonglei2004 2007-09-12
  • 打赏
  • 举报
回复
ACCESS不支持啊,有很多语法都不一样,
dawugui 2007-09-12
  • 打赏
  • 举报
回复
--这个在access中应该没问题.把你的两个结果分开计算,然后union起来.

SELECT username, SUM(tichen) AS tichen, gongzi FROM
(
SELECT login.username, login.gongzi, sell.shulian * produit.tichen tichen
FROM sell , produit ,login
where sell.id_produit = produit.id and sell.id_login = login.id where sell.selldate >= '2007-10-01' and produit.tichen_type = 1
union all
SELECT login.username, login.gongzi, sell.shulian * sell.price * produit.tichen tichen
FROM sell , produit ,login
where sell.id_produit = produit.id and sell.id_login = login.id where sell.selldate >= '2007-10-01' and produit.tichen_type = 0
union all
) a
GROUP BY username, gongzi
huanglang 2007-09-12
  • 打赏
  • 举报
回复
access确实不支持
scmyxj 2007-09-12
  • 打赏
  • 举报
回复
在SQL SERVER2000中支持的语句在ACCESS中不一定支持。
dawugui 2007-09-12
  • 打赏
  • 举报
回复
在sql 2000查询分析器测试完全通过并执行?

那就有某些东西在access中不支持了.
wxiaol 2007-09-12
  • 打赏
  • 举报
回复
先结帖了~

谢谢大家的帮助。。。。
wxiaol 2007-09-12
  • 打赏
  • 举报
回复
dawugui(潇洒老乌龟)

和我换的新方法类似啊~呵呵。。

最终解决方法(access数据库的):

sql="Select b.id_login,login.username,login.gongzi,b.tichen2,(login.gongzi+b.tichen2) as hj "&_
"from "&_
"( "&_
"select sum(tichen1) as tichen2,id_login from "&_
"( "&_
"SELECT sell.shulian * produit.tichen as tichen1,sell.id_login,sell.selldate "&_
"FROM produit INNER JOIN "&_
"sell ON produit.id = sell.id_produit "&_
"where produit.tichen_type=1 and (sell.selldate>=#"&CDate(nowstartdate)&"# and sell.selldate<=#"&CDate(nowenddate)&"#) "&_
"union "&_
"SELECT sell.shulian * sell.price * produit.tichen as tichen1,sell.id_login,sell.selldate "&_
"FROM produit INNER JOIN "&_
"sell ON produit.id = sell.id_produit "&_
"where produit.tichen_type=0 and (sell.selldate>=#"&CDate(nowstartdate)&"# and sell.selldate<=#"&CDate(nowenddate)&"#) "&_
") a "&_
"group by a.id_login "&_
") b "&_
"inner join login on b.id_login=login.id "

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧