紅糖糍粑
2023-04-08 22:18:24
我現(xiàn)在有一張表AIR_TICKET其中有個字段TOUR_CODE是nvarchar 類型,我現(xiàn)在想把當(dāng)其中的存放的是數(shù)值時就和這個表中的TICKET_PRICE做乘法計算,否則就為0,我現(xiàn)在寫了個sql 覺得沒有問題,但是一執(zhí)行就報“從數(shù)據(jù)類型 nvarchar 轉(zhuǎn)換為 numeric 時出錯?!边@是為什么啊,請指教還有為什么非得加上group by air_ticket.TOUR_CODE不加就報 “選擇列表中的列 'air_ticket.TOUR_CODE' 無效,因為該列沒有包含在聚合函數(shù)或 GROUP BY 子句中?!?nbsp;下面是我寫的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條經(jīng)驗 獲得超6個贊
1.conver函數(shù)這么寫看看:CONVERT(INT, AIR_TICKET.TOUR_CODE)
2.如果在select 列表項中除了包含聚合函數(shù)外,還包含了表的某些列,那么你必須使用group by語句,
你sql中使用了聚合函數(shù),因為你isnumeric(AIR_TICKET.TOUR_CODE)含有AIR_TICKET.TOUR_CODE字段,所以需要加group by,否則報錯。
按照我的理解,你的sql應(yīng)該是這樣的:
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 關(guān)注
- 232 瀏覽
添加回答
舉報
0/150
提交
取消