2013-03-21 53 views
3

我是SQL SERVER的新手,需要您提供建議。 我有一個大型的商店信息表。這裏是bench_id列:發生類似列的次數

**bench_id** 
31 
51 
51 
61 
61 
61 
71 
71 

我已經創建了另一個小桌子與兩列:

**distinct_bench**   **number** 
----------------------------- 

31        1 
51        2 
61        3 
71        2 

第二個表的編號列顯示bench_id的出現的次數。 我曾嘗試這樣的代碼:

insert into [dbo].BATCH_ID (batch_id, number) 
select 
    distinct [dbo].big_table.batch_id, 
      (select count([dbo].big_table.batch_id) from [dbo].big_table) 
    from [dbo].big_table 

,但不能得到正確的答案,我與bench_id發生次數期待。 你能指出我做錯了什麼嗎?先謝謝你!

回答

2

您需要有GROUP BY子句,因爲您需要使用COUNT()來計算benchID的發生次數。

INSERT INTO BATCH_ID (distinct_bench), number) 
SELECT benchID as distinct_bench, COUNT(*) number 
FROM big_table 
GROUP BY BATCH_ID 
+0

嘿謝謝你!還有一個問題,如果big_table.bench_id會被更新,那麼BATCH_ID表也會更新?有沒有可能的方法? – user2082503 2013-03-21 06:50:25

+0

嗯,你是什麼意思'BATCH_ID'也會更新?你的意思是刪除桌面上的重複項嗎? – 2013-03-21 06:58:30

+0

不,我的意思是當新代碼將被插入big_table.batch_id列時,該怎麼做,以便新的代碼也將可見im小表? – user2082503 2013-03-21 07:02:50