線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1034
推到 Plurk!
推到 Facebook!

SQL語法

尚未結案
avalokita
一般會員


發表:29
回覆:35
積分:12
註冊:2003-09-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-16 01:47:37 IP:211.74.xxx.xxx 未訂閱
請問各位: SQL的語法中,有類似if的判斷式嗎? 如: select * , round(number / total ,2 ) as 百分比 from TABLE, (select sum(number) as total from TABLE) t 因為 number/total,得去除Total, 因此當Total為零時,資料庫根本傳不回正確的資訊出來, 請問SQL有類似if的判斷式嗎?? 還是得寫在SQL外的和式碼中呢??
eric_shi
一般會員


發表:5
回覆:19
積分:4
註冊:2002-07-20

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-16 08:28:43 IP:210.66.xxx.xxx 未訂閱
不知你的資料庫是什麼 Oracle中有一個DECODE指令 你的程式中 "round(number / total ,2 ) " 可改寫成 DECODE(total, 0, number, round(number / total ,2 ) ) 這行是表示, 若total為0時,則傳回number,否則傳回round(number / total ,2 ) 類似 if total=0 then result=number else result=round(number / total ,2 ) 不知這樣的回答 對你是否有幫助
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-16 08:35:04 IP:218.163.xxx.xxx 未訂閱
引言: 請問各位: SQL的語法中,有類似if的判斷式嗎?
這要看你用什麼資料庫, 以Oacle為例,可以用DECODE DECODE(Field,condition1,value1,condition2,value2,default_value)
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-16 08:55:44 IP:210.65.xxx.xxx 未訂閱
Hi avalokita,    In SQL Server 可以使用 Case 指令,SQL Server 2000 Help 範例如下
SELECT   Category = 
      CASE type
         WHEN 'popular_comp' THEN 'Popular Computing'
         WHEN 'mod_cook' THEN 'Modern Cooking'
         WHEN 'business' THEN 'Business'
         WHEN 'psychology' THEN 'Psychology'
         WHEN 'trad_cook' THEN 'Traditional Cooking'
         ELSE 'Not yet categorized'
      END,
   CAST(title AS varchar(25)) AS 'Shortened Title',
   price AS Price
FROM titles
WHERE price IS NOT NULL
ORDER BY type, price
COMPUTE AVG(price) BY type
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
avalokita
一般會員


發表:29
回覆:35
積分:12
註冊:2003-09-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-20 20:16:32 IP:203.70.xxx.xxx 未訂閱
引言:
引言: 請問各位: SQL的語法中,有類似if的判斷式嗎?
這要看你用什麼資料庫, 以Oacle為例,可以用DECODE DECODE(Field,condition1,value1,condition2,value2,default_value)
我用的是Access,故上句的語法,我試過在ACCESS行不通。
avalokita
一般會員


發表:29
回覆:35
積分:12
註冊:2003-09-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-20 20:26:31 IP:203.70.xxx.xxx 未訂閱
引言: Hi avalokita, In SQL Server 可以使用 Case 指令,SQL Server 2000 Help 範例如下
SELECT   Category = 
      CASE type
         WHEN 'popular_comp' THEN 'Popular Computing'
         WHEN 'mod_cook' THEN 'Modern Cooking'
         WHEN 'business' THEN 'Business'
         WHEN 'psychology' THEN 'Psychology'
         WHEN 'trad_cook' THEN 'Traditional Cooking'
         ELSE 'Not yet categorized'
      END,
   CAST(title AS varchar(25)) AS 'Shortened Title',
   price AS Price
FROM titles
WHERE price IS NOT NULL
ORDER BY type, price
COMPUTE AVG(price) BY type
< face="Verdana, Arial, Helvetica"> 小弟才才疏學淺,不太懂得上句的功用。 基本上,我想要完成的功能,是在SQL語法中,寫入判斷式。 判斷若欄位值不為0值,則"進行運算以求出百分比",否則就不 讓該句求出百分比的SQL語法產生作用。 拿個簡單的例子 select Item,ItemNum,Avg(次數) from Table group by Item 若ItemNum值為零時,則不進行Avg(次數)的運算, 只顯示Item 和ItemNum兩個欄位。
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-20 22:14:02 IP:61.62.xxx.xxx 未訂閱
在 access 中可以使用 IIf 函數來進行判斷, 如: SELECT IIf (total=0, 0, round(number/total,2)) AS 百分比 FROM t1 select Item,ItemNum,IIf(ItemNum<>0, Avg(次數), 0) from Table group by Item
avalokita
一般會員


發表:29
回覆:35
積分:12
註冊:2003-09-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-03-22 21:09:35 IP:203.70.xxx.xxx 未訂閱
引言: 在 access 中可以使用 IIf 函數來進行判斷, 如: SELECT IIf (total=0, 0, round(number/total,2)) AS 百分比 FROM t1 select Item,ItemNum,IIf(ItemNum<>0, Avg(次數), 0) from Table group by Item
問題解決了~~~ 真是太感激了~~~~< >< >
系統時間:2024-05-19 6:52:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!