iT邦幫忙

0

請問一個SQL 刪除最後一字串問題 ....

  • 分享至 

  • xImage

請問一下SQL 的問題 ,
以下是我的TABL , 我要刪除number id 最後一碼後再把number id 做group , 再加總起來
請問先進大們我該怎麼做呢..
NO.Number_ID QTY
1 S11011-011 460
2 S11011-012 482
3 S11011-030 513
4 S11011-040 489
5 S11011-050 489
6 S11011-061 130
7 S11011-062 286

結果.........
NO. Number_ID QTY
1 S11011-010 942
2 S11011-030 513
3 S11011-040 489
4 S11011-050 489
5 S11011-060 416

麻煩請教了....感謝...

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

4
賽門
iT邦超人 1 級 ‧ 2011-02-18 13:06:32
最佳解答

SQL Server? 這是我想到的第一個方法....

<pre class="c" name="code">SELECT LEFT(Number_ID, LEN(Number_ID)-1) Number_ID, SUM(QTY) QTY
  INTO #T1
  FROM TEST_A
 GROUP BY LEFT(Number_ID, LEN(Number_ID)-1)

SELECT IDENTITY(INT, 1, 1) NO, * 
  INTO #T2
  FROM #T1

SELECT * FROM #T2

應該有更實用的做法....再想想看, 想到再來補充

另外, 如果是Oracle, 就有不同的解法, 請您以後發問時同時說明資料庫系統是那一種...

看更多先前的回應...收起先前的回應...
賽門 iT邦超人 1 級 ‧ 2011-02-18 13:08:17 檢舉

用Group By Number_ID也可以....

sundayjoe iT邦新手 5 級 ‧ 2011-02-18 13:33:53 檢舉

simon 大 :
拍謝 !
我是mysql + asp.net , 好像不能使用耶
謝謝你的指導

賽門 iT邦超人 1 級 ‧ 2011-02-18 13:49:18 檢舉

喔...MySQL....那當然不能用, 我是寫給SQL Server用的....等一下, 我再把MySQL的語法給你

sundayjoe iT邦新手 5 級 ‧ 2011-02-18 15:14:42 檢舉

超感謝simon ....^^

MySQL 沒有LEN(), 要改用LENGTH().

賽門 iT邦超人 1 級 ‧ 2011-02-18 15:27:42 檢舉

來吧...MySQL的我的想法....

<pre class="c" name="code">CREATE TEMPORARY TABLE SUM_A 
(ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Number_ID CHAR(9), QTY INT);

INSERT INTO SUM_A (Number_ID, QTY)
SELECT LEFT(Number_ID, LENGTH(Number_ID)-1) Number_ID, SUM(QTY) QTY 
  FROM TEST_A
 GROUP BY LEFT(Number_ID, LENGTH(Number_ID)-1);

SELECT * FROM SUM_A;

怎麼放到ASP.NET, 就要請您考慮一下了...要注意最後要DROP TEMPORARY TABLE SUM_A, 以免佔用Buffer

我想過用一行SQL來表現, 但一直卡在第一個序號欄位, 就變通一下了, 或許有版大能提供更簡潔的做法...

sundayjoe iT邦新手 5 級 ‧ 2011-02-18 15:32:01 檢舉

simon 拍謝 , 我的序號是最後用gridview 插進去的 , 所以本身sql 抓出來是沒有那一行的資料 , 所以說可否用一行來run 呢 ...!!
就乾心耶.....^^

sundayjoe iT邦新手 5 級 ‧ 2011-02-18 15:53:19 檢舉

simon 大 , 剛小弟用一下sql :
SELECT LEFT(Number_ID , LENGTH(Number_ID)-1),sum(qty) FROM test WHERE lotid like 'S%' GROUP BY Number_ID order by Number_ID;

NO.Number_ID QTY
1 S11011-01 460
2 S11011-01 482
3 S11011-03 513
4 S11011-04 489
5 S11011-05 489
6 S11011-06 130
7 S11011-06 286

重覆的部份要如何加總呢 ?

sundayjoe iT邦新手 5 級 ‧ 2011-02-18 16:00:12 檢舉

sorry , 剛試了以下 , 可行了 ....太棒了

SELECT LEFT(number_id, LENGTH(number_id)-1) as number_id,sum(qty) FROM cim.mfg_wip_wafer m WHERE number_id like 'S%' GROUP BY LEFT(number_id, LENGTH(number_id)-1) order by number_id;

原來取字串要下兩次......
simon真是高手....超感恩....謝了

賽門 iT邦超人 1 級 ‧ 2011-02-18 16:58:49 檢舉

雖說SQL語法有標準, 但其實各家SQL有各自的巧妙

MySQL的Group BY要完全符合SELECT中的方式, 但SQL SERVER只要用欄位名稱就行了..

能夠幫您解決問題就好.....記得要結案, 不要成了呆題...

賽門 iT邦超人 1 級 ‧ 2011-02-18 17:01:14 檢舉

sundayjoe提到:
用一行來run

那就只要這一行...

<pre class="c" name="code">SELECT LEFT(Number_ID, LENGTH(Number_ID)-1) Number_ID, SUM(QTY) QTY    
  FROM TEST_A   
 GROUP BY LEFT(Number_ID, LENGTH(Number_ID)-1);
賽門 iT邦超人 1 級 ‧ 2011-02-18 17:10:05 檢舉

sundayjoe提到:
高手

還有比我更好幾層樓的....偷笑

sundayjoe iT邦新手 5 級 ‧ 2011-02-18 19:42:49 檢舉

sorry , 再問個笨問題,, 我要去那理結案呀 ~
simon 大,你太客氣囉 , 剛接觸此地 , 請別見怪了 ...
不知可否加入您msn呢...就乾心ㄋㄟ
my msn , sunday_joe@hotmail.com

我要發表回答

立即登入回答