我有一张桌子,每天都有多个工作记录。没有主键的原因是因为有多个记录显示每个工人每天,每个人工作几天。
我编写了一个查询,该查询使用“ into”将其放入表中。查询非常复杂,因此我认为只修改表会更容易。
我不会有任何问题,但是表将返回重复的行。如果我可以为每个唯一的行分配一个数字(或者如果还有另一种方法会更好),那么我可以选择唯一的ID号,并且不会重复。
我尝试过select distinct *
,但是它不起作用。
这是桌子:
CREATE TABLE [dbo].[liaisonperformance](
[sr_name] [varchar](50) NULL,
[workdate] [date] NULL,
[Calls_in] [int] NULL,
[Calls_Out] [int] NULL,
[Chats] [int] NULL,
[reaches] [int] NULL,
[books] [int] NULL,
[attends] [int] NULL,
[hoursworked] [float] NULL
) ON [PRIMARY]
GO
答案 0 :(得分:0)
您可能想使用跨越多个列的主键,例如sr_name和workdate。
一种替代解决方案是拥有一列id INT IDENTITY(1,1) PRIMARY KEY
。第二种解决方案称为代理密钥,而第一种是自然密钥(我假设sr_name和workdate的组合始终是唯一的)
答案 1 :(得分:0)
我建议将表定义为:
CREATE TABLE [dbo].[liaisonperformance] (
liaisonperformance_id int identity primary key,
[sr_name] [varchar](50) NULL,
[workdate] [date] NULL,
[Calls_in] [int] NULL,
[Calls_Out] [int] NULL,
[Chats] [int] NULL,
[reaches] [int] NULL,
[books] [int] NULL,
[attends] [int] NULL,
[hoursworked] [float] NULL
) ;
如果您使用的是select . . . into
,请使用identity()
function:
select identity(int, 1, 1) as liaisonperformance_id,
. . .
into liaisonperformance_id
from . . .;