2013-03-21 232 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