2013-03-21 179 views
0

對不起!我只是不知道該怎麼做這個任務。 數據與此問題here中的數據相同,但是如果在big_table.bench_id中插入新數據並且我希望在BATCH_ID表中還可以看到此數據,該怎麼辦? 我試圖用鍵來綁定它們,但是big_table已經有了主鍵,所以不知道該怎麼做。請任何意見,將不勝感激。SQL SERVER:數據插入

Big_table.bench_id:

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

我創造了另一種BATCH_ID表有兩列:

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

31        1 
51        2 
61        3 
71        2 

因此,舉例來說,如果我將新代碼添加到像「111 big_table.bench_id 「:

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

所以它也將出現在另一個表:

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

    31        1 
    51        2 
    61        3 
    71        2 
    111        1 
+0

您是如何獲得在'Batch_Id'表'distinct_bench = 111'的列'number'價值? – praveen 2013-03-21 08:47:28

+0

它只是隨機值...在未來,新記錄將被插入到表中,因此,如何在第二個表中顯示新記錄? – user2082503 2013-03-21 08:54:10

回答

2

你真的需要另一張桌子嗎?您可以創建一個視圖來實現這一點。

create table xxTemp (bench_id int) ; 

insert into xxTemp (bench_id) 
values (31) 
    ,(51) 
    ,(51) 
    ,(61) 
    ,(61) 
    ,(61) 
    ,(71) 
    ,(71) ; 

create view xxTempCount as 
Select bench_id 
    , COUNT(1) number 
From xxTemp 
Group By bench_id ; 

select * 
from xxTempCount ; 

insert into xxTemp (bench_id) 
values (111) ; 

select * 
from xxTempCount ; 

埃爾默

0

而不是創建用於該目的的表,你可以創建一個視圖,將返回你所需的信息。例如,嘗試以下操作:

CREATE VIEW vwBigTable 
AS 
    SELECT bench_id AS [**distinct_bench**], COUNT(*) AS [**number**] 
    FROM big_table 
    GROUP BY bench_id 

然後:

SELECT * FROM vwBigTable