如何在已經COUNT數量上再下一次COUNT |
答題得分者是:ttring
|
lovemari
中階會員 ![]() ![]() ![]() 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
小弟最近需要做一份資料
內容是 SN 品號 統計換版 1 XX 1 2 XX 3 3 XX 3 4 XX 1 5 XX 1 -那希望秀成- 品號 統計換版 數量 XX 1 3 XX 3 2 就是原有的 COUNT 統計換版上 再做一次統計 所以 3 會有 2筆 1 會有3筆 可小弟程式碼跑出來變成 品號 統計換版 數量 XX 1 1 XX 3 3 數量都跟前面的統計一樣數字 [code delphi] SELECT B.PART_NO "品號",A.SERIAL_NUMBER,COUNT(C.PART_NAME) "統計換版",COUNT(G.CNT) "數量" FROM G_SN_REPAIR A, SYS_PART B, G_SN_REPAIR_LOCATION C, (SELECT E.PART_NO,COUNT(F.PART_NAME) CNT,D.SERIAL_NUMBER FROM G_SN_REPAIR D, SYS_PART E, G_SN_REPAIR_LOCATION F WHERE TO_CHAR(REPAIR_TIME,'YYYYMMDD') BETWEEN '20080701' AND '20081231' AND D.MODEL_ID = E.PART_ID AND D.RECID = F.RECID AND D.RP_STAGE_ID = '10015' AND E.PART_NO = 'PA962' AND F.PART_NAME <> 'N/A' GROUP BY D.SERIAL_NUMBER,E.PART_NO ORDER BY COUNT(F.PART_NAME) DESC) G WHERE TO_CHAR(REPAIR_TIME,'YYYYMMDD') BETWEEN '20080701' AND '20081231' AND A.MODEL_ID = B.PART_ID AND A.RECID = C.RECID AND A.SERIAL_NUMBER = G.SERIAL_NUMBER AND A.RP_STAGE_ID = '10015' AND B.PART_NO = 'PA962' AND C.PART_NAME <> 'N/A' GROUP BY B.PART_NO,A.SERIAL_NUMBER ORDER BY COUNT(C.PART_NAME) DESC [/code]
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet |
ttring
一般會員 ![]() ![]() 發表:11 回覆:23 積分:16 註冊:2008-11-19 發送簡訊給我 |
假如table 是長這樣
SN 品號 統計換版 1 XX 1 2 XX 3 3 XX 3 4 XX 1 5 XX 1 select 品號, 統計換版, count(*) as 數量 from table group by 品號, 統計換版 即可 或者提供原始table 大略的情況 :P ===================引 用 lovemari 文 章=================== 小弟最近需要做一份資料 內容是 SN 品號 統計換版 1 XX 1 2 XX 3 3 XX 3 4 XX 1 5 XX 1 -那希望秀成- 品號 統計換版 數量 XX 1 3 XX 3 2 就是原有的 COUNT 統計換版上 再做一次統計 所以 3 會有 2筆 1 會有3筆 可小弟程式碼跑出來變成 品號 統計換版 數量 XX 1 1 XX 3 3 數量都跟前面的統計一樣數字 [code delphi] SELECT B.PART_NO "品號",A.SERIAL_NUMBER,COUNT(C.PART_NAME) "統計換版",COUNT(G.CNT) "數量" FROM G_SN_REPAIR A, SYS_PART B, G_SN_REPAIR_LOCATION C, (SELECT E.PART_NO,COUNT(F.PART_NAME) CNT,D.SERIAL_NUMBER FROM G_SN_REPAIR D, SYS_PART E, G_SN_REPAIR_LOCATION F WHERE TO_CHAR(REPAIR_TIME,'YYYYMMDD') BETWEEN '20080701' AND '20081231' AND D.MODEL_ID = E.PART_ID AND D.RECID = F.RECID AND D.RP_STAGE_ID = '10015' AND E.PART_NO = 'PA962' AND F.PART_NAME <> 'N/A' GROUP BY D.SERIAL_NUMBER,E.PART_NO ORDER BY COUNT(F.PART_NAME) DESC) G WHERE TO_CHAR(REPAIR_TIME,'YYYYMMDD') BETWEEN '20080701' AND '20081231' AND A.MODEL_ID = B.PART_ID AND A.RECID = C.RECID AND A.SERIAL_NUMBER = G.SERIAL_NUMBER AND A.RP_STAGE_ID = '10015' AND B.PART_NO = 'PA962' AND C.PART_NAME <> 'N/A' GROUP BY B.PART_NO,A.SERIAL_NUMBER ORDER BY COUNT(C.PART_NAME) DESC [/code]
編輯記錄
ttring 重新編輯於 2009-01-15 17:52:52, 註解 無‧
|
lovemari
中階會員 ![]() ![]() ![]() 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
Dear 樓上大大
Table 是長這樣下面這樣 SN 品號 PART_NAME 1 XX YY 2 XX YY 3 XX ZZ 4 XX ZZ 5 XX YY 統計換版 是我已經先Count 一次了 Select SN,品號 , COUNT(PART_NAME) "統計換版" FROM TABLE GROUP BY SN,品號 然後我需要在已經COUNT過的 統計換版 再做一次COUNT 去算 這邊就卡住了...
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet |
ttring
一般會員 ![]() ![]() 發表:11 回覆:23 積分:16 註冊:2008-11-19 發送簡訊給我 |
table 長這樣, 用你的語法, 跑出來不是會變成 如下 (因SN 每筆都不同啊 @@)
SN 品號 "統計換版" 1 XX 1 2 XX 1 3 XX 1 4 XX 1 5 XX 1 如果是 select 品號, count(part_name) as '統計換版) from table group by 品號, part_name 變成 品號 統計換版 XX 3 XX 2 ===================引 用 lovemari 文 章=================== Dear 樓上大大 Table 是長這樣下面這樣 SN 品號 PART_NAME 1 XX YY 2 XX YY 3 XX ZZ 4 XX ZZ 5 XX YY 統計換版 是我已經先Count 一次了 Select SN,品號 , COUNT(PART_NAME) "統計換版" FROM TABLE GROUP BY SN,品號 然後我需要在已經COUNT過的 統計換版 再做一次COUNT 去算 這邊就卡住了... |
lovemari
中階會員 ![]() ![]() ![]() 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
Dear 大大
對不起 是我口誤.... 我沒解釋清楚Table Table 是長下面這樣 SN 品號 PART_NAME 1 XX ABC 1 XX DEF 1 XX GHI 2 XX PLA 2 XX SFS 3 YY YWR 4 XX QWE 4 XX JKJ 所以當我下 SELECT SN,品號,COUNT(PART_NAME) FROM TABLE GROUP BY SN,品號 結果會出現 SN 品號 COUNT 1 XX 3 2 XX 2 3 YY 1 4 XX 2 =======然後以下是我目前遇到的問題 以及想呈現的畫面====== 那我想在篩選就是 品號 的 COUNT = 3 的有幾PCS COUNT = 2 的有幾PCS 希望呈現出 品號 COUNT PCS XX 3 1 XX 2 2 YY 1 1
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet |
ttring
一般會員 ![]() ![]() 發表:11 回覆:23 積分:16 註冊:2008-11-19 發送簡訊給我 |
這樣呢?.?
select 品號, cou , count(*) as pcs from ( SELECT SN,品號,COUNT(PART_NAME) as cou FROM TABLE GROUP BY SN,品號 ) group by 品號, cou ===================引 用 lovemari 文 章=================== Dear 大大 對不起 是我口誤.... 我沒解釋清楚Table Table 是長下面這樣 SN 品號 PART_NAME 1 XX ABC 1 XX DEF 1 XX GHI 2 XX PLA 2 XX SFS 3 YY YWR 4 XX QWE 4 XX JKJ 所以當我下 SELECT SN,品號,COUNT(PART_NAME) FROM TABLE GROUP BY SN,品號 結果會出現 SN 品號 COUNT 1 XX 3 2 XX 2 3 YY 1 4 XX 2 =======然後以下是我目前遇到的問題 以及想呈現的畫面====== 那我想在篩選就是 品號 的 COUNT = 3 的有幾PCS COUNT = 2 的有幾PCS 希望呈現出 品號 COUNT PCS XX 3 1 XX 2 2 YY 1 1 |
lovemari
中階會員 ![]() ![]() ![]() 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
|
ttring
一般會員 ![]() ![]() 發表:11 回覆:23 積分:16 註冊:2008-11-19 發送簡訊給我 |
我依你的資料建的table 語法應該是沒問題的
但看你原本貼的SQL 碼, 實際的table 應是複雜多的 所以若有空也許可以查查看是否在那個子查詢 或 join 時 少了那個key 值對應, 造成有倍數資料的出現 ===================引 用 lovemari 文 章=================== Dear 這各方法我原本有試過 那發現COUNT出來數字很大 可是剛剛發現到 PCS 數字 竟然是 COUNT 的倍數 如果COUNT = 1 PCS = COUNT * 1 如果COUNT = 2 PCS = COUNT * 2 所以我再改成 (COUNT(*) / COU) AS PCS 就可以了 感謝... |
lovemari
中階會員 ![]() ![]() ![]() 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |