sql 如何統計 "" 與null值 |
缺席
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
請問各位 下列的語法統計出來有null值與""(空字串), 如何可以將這兩項以sql合在一起統計 select DEPTNO, COLOR, SPEC, sum(COUNTS) as TOTCOUNT from D100 where PARTNO= :iPARTNO and (SPEC is null or SPEC="") group by DEPTNO, COLOR SPEC 結果出來為
[CODE]
A1 白 "" 50 // ""代表空字串, 非NULL值, 電腦中看是空白
A1 白 NULL 10 // NULL代表無值, 電腦中直接反應是NULL 我希望結果如下如果
A1 白 60 謝謝!
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi P.D. 大大, 試試這樣寫,在 SQL Server 2000 上可以 Work:
SELECT DEPTNO, COLOR, ISNULL(SPEC,'') AS SPEC, SUM(COUNTS) AS TOTCOUNT FROM D100 WHERE PARTNO = :IPARTNO AND (SPEC IS NULL OR SPEC='') GROUP BY DEPTNO, COLOR, ISNULL(SPEC,'')---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
感謝 Fishman 指教,
我忘了說, 我是用 INTERBASE, 沒有 ISNULL的用法, 倒是有CAST(), 但 GROUP BY 後面無法接 CAST()用法, 所以也行不通 select DEPTNO, COLOR, CAST(SPEC AS CHARACTER) AS SPEC, sum(COUNTS) as TOTCOUNT from D100 where PARTNO= :iPARTNO and (SPEC is null or SPEC="") group by DEPTNO, COLOR, CAST(SPEC AS CHARACTER) AS SPEC
結果是紅色部份不支援
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi P.D. 大大, 試試這樣
SELECT DEPTNO, COLOR, CAST(SPEC AS CHARACTER) AS SPEC, SUM(COUNTS) AS TOTCOUNT FROM D100 WHERE PARTNO= :IPARTNO AND (SPEC IS NULL OR SPEC="") GROUP BY DEPTNO, COLOR, CAST(SPEC AS CHARACTER)---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: Hi P.D. 大大, 試試這樣SELECT DEPTNO, COLOR, CAST(SPEC AS CHARACTER) AS SPEC, SUM(COUNTS) AS TOTCOUNT FROM D100 WHERE PARTNO= :IPARTNO AND (SPEC IS NULL OR SPEC="") GROUP BY DEPTNO, COLOR, CAST(SPEC AS CHARACTER)---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ---------------------------------- >>< face="Verdana, Arial, Helvetica"> 謝謝, 我上面有提到, 使用 GROUP BY 不接受 CAST()的語法! |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi P.D. 大大, 抱歉,我沒用過 InterBase,敬請見諒! 我參考了以下討論 http://delphi.ktop.com.tw/topic.php?topic_id=49221 更改如下,不知是否可行?
SELECT DEPTNO, COLOR, SPEC || '' AS SPEC, SUM(COUNTS) AS TOTCOUNT FROM D100 WHERE PARTNO= :IPARTNO AND (SPEC IS NULL OR SPEC="") GROUP BY DEPTNO, COLOR, SPEC || ''歹勢!亂槍打鳥! ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
懷舊的人
高階會員 發表:28 回覆:152 積分:141 註冊:2003-01-08 發送簡訊給我 |
這樣好嗎?
SELECT DEPTNO,COLOR,'' AS SPEC,SUM(COUNTS) AS TOTCOUNT FROM D100 WHERE PARTNO = :IPARTNO AND (SPEC IS NULL OR SPEC = '') GROUP BY DEPTNO,COLOR,'' UNION SELECT DEPTNO,COLOR,SPEC,SUM(COUNTS) AS TOTCOUNT FROM D100 WHERE PARTNO = :IPARTNO AND (SPEC IS NOT NULL AND SPEC <> '') GROUP BY DEPTNO,COLOR,SPEC |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 這樣好嗎?SORRY! 我試了 IBCONSOLE 系統中, 並不支援 紅色的寫法, 我用的是FIREBIRD 1.5 謝謝!SELECT DEPTNO,COLOR,'' AS SPEC,SUM(COUNTS) AS TOTCOUNT FROM D100 WHERE PARTNO = :IPARTNO AND (SPEC IS NULL OR SPEC = '') GROUP BY DEPTNO,COLOR,'' UNION SELECT DEPTNO,COLOR,SPEC,SUM(COUNTS) AS TOTCOUNT FROM D100 WHERE PARTNO = :IPARTNO AND (SPEC IS NOT NULL AND SPEC <> '') GROUP BY DEPTNO,COLOR,SPEC |
shunaarom
一般會員 發表:8 回覆:34 積分:18 註冊:2003-07-02 發送簡訊給我 |
|
懷舊的人
高階會員 發表:28 回覆:152 積分:141 註冊:2003-01-08 發送簡訊給我 |
1. 抱歉,我原以為只是提供探討可行的方法。
2. 我直覺認為應該可行,所以我寫了一段語法並且在 INTERBASE 試用過,請試試!
SELECT DEPTNO,COLOR,CAST('' AS CHARACTER) AS SPEC,SUM(COUNTS) AS TOTCOUNT FROM D100 WHERE PARTNO = :IPARTNO AND (SPEC IS NULL OR SPEC = '') GROUP BY DEPTNO,COLOR UNION SELECT DEPTNO,COLOR,CAST(SPEC AS CHARACTER) AS SPEC,SUM(COUNTS) AS TOTCOUNT FROM D100 WHERE PARTNO = :IPARTNO AND (SPEC IS NOT NULL AND SPEC <> '') GROUP BY DEPTNO,COLOR,SPEC |
shunaarom
一般會員 發表:8 回覆:34 積分:18 註冊:2003-07-02 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 1. 抱歉,我原以為只是提供探討可行的方法。 2. 我直覺認為應該可行,所以我寫了一段語法並且在 INTERBASE 試用過,請試試!這段語法我運行結果SELECT DEPTNO,COLOR,CAST('' AS CHARACTER) AS SPEC,SUM(COUNTS) AS TOTCOUNT FROM D100 WHERE PARTNO = :IPARTNO AND (SPEC IS NULL OR SPEC = '') GROUP BY DEPTNO,COLOR UNION SELECT DEPTNO,COLOR,CAST(SPEC AS CHARACTER) AS SPEC,SUM(COUNTS) AS TOTCOUNT FROM D100 WHERE PARTNO = :IPARTNO AND (SPEC IS NOT NULL AND SPEC <> '') GROUP BY DEPTNO,COLOR,SPEC A1 白 "" 1691 A1 白 "" 2596 A1 白 NULL 262反而出現紅色那一筆, 好奇怪! 如果用我原來的寫法 SELECT DEPTNO,COLOR, SPEC, SUM(COUNTS) AS TOTCOUNT FROM D100 WHERE PARTNO='A1' AND COLOR='白色' AND (SPEC IS NULL OR SPEC = '') GROUP BY DEPTNO,COLOR, SPEC 結果如下, 而這個才是正確的 A1 白 "" 1691 A1 白 NULL 262發表人 - P.D. 於 2005/07/04 22:48:02 |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: ttSQL:=SELECT CMMBT.SaNo, CUBT.CuBd FROM CMMBT INNER JOIN CUBT ON (CMMBT.SaNo IS NULL) AND (CUBT.CuBd IS NULL) 這是我查詢空值的SQL語法~不知是不是大大要的?? 因為我是用ADODataSet 所以只.recordcount就可以查出有幾筆~ 大大如需要做什麼判斷~在加程式碼就好了!!謝謝你的意見, 不過我的需求是在同一份TABLE上分析, 而且是要計算COUNTS值的總和, 這個語法可能不適用, 謝謝! |
懷舊的人
高階會員 發表:28 回覆:152 積分:141 註冊:2003-01-08 發送簡訊給我 |
這真的是很奇怪 1. 我試將這語法用在 SQL SERVER 2000, INTERBASE 6.5, DBMAKER 4.0, PARADOX 都不會有問題而且都可得到正確的結果, 只有PARADOX
不支援 CAST('' AS CHARACTER) AS SPEC , 所以改成 '' AS SPEC, 改後結果依然正確
2. 我本懷疑是否資料庫系統安裝在 WINDOWS OR LINUX 的問題, 但我試 DBMAKER 在 LINUX 上執行結果也正確,沒有你試的奇怪結果
3. 只能請你檢查資料庫的 CHARACTER SET 或其他設定,因為我無法使用你的環境所以無法做進一部的分析
4. 希望你可以找到這原因並告訴我們,我們很希望知道這現象是如何產生的 謝謝! 發表人 - 懷舊的人 於 2005/07/05 12:00:06 發表人 - 懷舊的人 於 2005/07/05 12:01:58
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 這真的是很奇怪 1. 我試將這語法用在 SQL SERVER 2000, INTERBASE 6.5, DBMAKER 4.0, PARADOX 都不會有問題而且都可得到正確的結果, 只有PARADOX 不支援 CAST('' AS CHARACTER) AS SPEC , 所以改成 '' AS SPEC, 改後結果依然正確 2. 我本懷疑是否資料庫系統安裝在 WINDOWS OR LINUX 的問題, 但我試 DBMAKER 在 LINUX 上執行結果也正確,沒有你試的奇怪結果 3. 只能請你檢查資料庫的 CHARACTER SET 或其他設定,因為我無法使用你的環境所以無法做進一部的分析 4. 希望你可以找到這原因並告訴我們,我們很希望知道這現象是如何產生的 謝謝! 發表人 - 懷舊的人 於 2005/07/05 12:00:06 發表人 - 懷舊的人 於 2005/07/05 12:01:58感謝各位花那麼多時間解答, 因為案件結案中, 暫時無法詳細的查驗資料, 等結案後再仔細來研究一下, 謝謝! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |