注册 登录
编程论坛 VFP论坛

我用这命令时提示:函数名缺少)该如何解决,请大师帮忙

反璞归真 发布于 12 小时前, 86 次点击
SELECT zxdm, SUM(CASE WHEN kmdm = '06' THEN 报名人数 ELSE 0 END) AS [化学],SUM(CASE WHEN kmdm = '07' THEN 报名人数 ELSE 0 END) AS [生物学],SUM(CASE WHEN kmdm = '08' THEN 报名人数 ELSE 0 END) AS [历史],SUM(CASE WHEN kmdm = '09' THEN 报名人数 ELSE 0 END) AS [地理],FROM your_table GROUP BY zxdm
6 回复
#2
laowan00111 小时前
AS [地理],FROM your_table

这里的逗号是多余的,改成空格

#3
chychychy11 小时前
感觉地理后面的逗号是多的,尝试下面是否可以;另如果上传数据测试会更准确
SELECT zxdm, ;
    SUM(CASE WHEN kmdm = '06' THEN 报名人数 ELSE 0 END) AS [化学],;
    SUM(CASE WHEN kmdm = '07' THEN 报名人数 ELSE 0 END) AS [生物学],;
    SUM(CASE WHEN kmdm = '08' THEN 报名人数 ELSE 0 END) AS [历史],;
    SUM(CASE WHEN kmdm = '09' THEN 报名人数 ELSE 0 END) AS [地理];
FROM your_table ;
GROUP BY zxdm
#4
反璞归真10 小时前
试了一下,地理后面的逗号去掉还提示:函数名缺少),请大师门帮忙解决一下,我实在找不到原因错在哪里
#5
csyx10 小时前
看到  AS [化学] 写法,估计是习惯了 T-SQL 的语法习惯,通常在 vfp 中不需要这样扩起来,不过问题不在这
vfp 不支持 case when ... end 语法,若代码确实是用在 vfp 客户端,用 Icase 替换吧

SELECT zxdm ;
    , SUM(ICASE(kmdm = '06', 报名人数, 0)) AS [化学] ;
    , SUM(ICASE(kmdm = '07', 报名人数, 0)) AS [生物学] ;
...



[此贴子已经被作者于2025-10-10 10:46编辑过]

#6
反璞归真10 小时前
以下是引用csyx在2025-10-10 10:44:24的发言:

看到  AS [化学] 写法,估计是习惯了 T-SQL 的语法习惯,通常在 vfp 中不需要这样扩起来,不过问题不在这
vfp 不支持 case when ... end 语法,若代码确实是用在 vfp 客户端,用 Icase 替换吧

SELECT zxdm ;
    , SUM(ICASE(kmdm = '06', 报名人数, 0)) AS [化学] ;
    , SUM(ICASE(kmdm = '07', 报名人数, 0)) AS [生物学] ;
...
谢谢指导,问题已解决,再次感谢
#7
chychychy7 小时前
我用数据测试了一下可以这样,kldm为文本型数据
SELECT bmddm ;
    ,SUM(IIF(kldm='1',1,0)) AS 普通类 ;
    ,SUM(IIF(kldm='3',1,0)) AS 艺术类 ;
    ,SUM(IIF(kldm='4',1,0)) AS 体育类 ;
FROM 原始数据 ;
GROUP BY bmddm
1