我现在有一张表AIR_TICKET其中有个字段TOUR_CODE是nvarchar 类型,我现在想把当其中的存放的是数值时就和这个表中的TICKET_PRICE做乘法计算,否则就为0,我现在写了个sql 觉得没有问题,但是一执行就报“从数据类型 nvarchar 转换为 numeric 时出错。”这是为什么啊,请指教还有为什么非得加上group by air_ticket.TOUR_CODE不加就报 “选择列表中的列 'air_ticket.TOUR_CODE' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。” 下面是我写的sql 语句 select case when isnumeric(AIR_TICKET.TOUR_CODE)=1 then sum(AIR_TICKET.TICKET_PRICE*(convert(numeric,AIR_TICKET.TOUR_CODE))) else 0 end as Z_VALUE_REWARD from air_ticket group by air_ticket.TOUR_CODE
2 回答
慕哥9229398
TA贡献1877条经验 获得超6个赞
1.conver函数这么写看看:CONVERT(INT, AIR_TICKET.TOUR_CODE)
2.如果在select 列表项中除了包含聚合函数外,还包含了表的某些列,那么你必须使用group by语句,
你sql中使用了聚合函数,因为你isnumeric(AIR_TICKET.TOUR_CODE)含有AIR_TICKET.TOUR_CODE字段,所以需要加group by,否则报错。
按照我的理解,你的sql应该是这样的:
SELECT SUM(CASE
WHEN isnumeric(AIR_TICKET.TOUR_CODE) = 1 THEN
AIR_TICKET.TICKET_PRICE * (CONVERT(INT, AIR_TICKET.TOUR_CODE))
ELSE
0
END) AS Z_VALUE_REWARD
FROM air_ticket
- 2 回答
- 0 关注
- 187 浏览
添加回答
举报
0/150
提交
取消