亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我不想把group by air_ticket.TOUR_CODE加上,有什么辦法沒有?

我不想把group by air_ticket.TOUR_CODE加上,有什么辦法沒有?

紅糖糍粑 2023-04-08 22:18:24
我現在有一張表AIR_TICKET其中有個字段TOUR_CODE是nvarchar 類型,我現在想把當其中的存放的是數值時就和這個表中的TICKET_PRICE做乘法計算,否則就為0,我現在寫了個sql 覺得沒有問題,但是一執行就報“從數據類型 nvarchar 轉換為 numeric 時出錯?!边@是為什么啊,請指教還有為什么非得加上group by air_ticket.TOUR_CODE不加就報 “選擇列表中的列 'air_ticket.TOUR_CODE' 無效,因為該列沒有包含在聚合函數或 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條經驗 獲得超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  


查看完整回答
反對 回復 2023-04-12
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

你不加在group by里面,那你加上聚合函數吧,比如max(xxxxxxxx)

查看完整回答
反對 回復 2023-04-12
  • 2 回答
  • 0 關注
  • 224 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號