在我的应用程序中,当我插入数据时,我必须根据其他列中的值为特定列生成顺序值。我可以在SQL Server 2005中设置任何属性。
我正在更详细地解释我的要求:
我有两个字段id和branchid的表,我必须为id的每个唯一值自动插入branchid的顺序值
那是
id - BranchId
1 - 1,
1 - 2,
1 - 3,
现在,如果我插入一个id值为2的行,那么branchid应该自动设置为值1
谢谢和问候 苏拉杰。
答案 0 :(得分:2)
我不知道您可以设置任何字段值/属性。
一种可能的解决方案: - 在Inserts上设置一个触发器,为你创建正确的BranchId
答案 1 :(得分:1)
你不需要第二列。只需使用row_number()函数和partition by子句
declare @t table(id int)
insert into @t
select 1 union all
select 1 union all
select 1 union all
select 2
select id,row_number() over (partition by id order by id) as Brandid from @t
答案 2 :(得分:0)
使用公式字段,如果逻辑清除,则为其创建函数 在公式字段的第二列中使用该函数,它会自动设置该值。
答案 3 :(得分:0)
嗯,Madhivanan的方法在您选择数据时会起作用,我很欣赏,因为这也会减少存储空间。如果想要将生成的BrandId保留在表中,这只是一种方法。
在INSET值为Id列后,您只需要执行UPDATE。
--Table with sample data
DECLARE @Tbl TABLE(ID INT, BRANDID INT)
INSERT INTO @Tbl(ID) VALUES (1),(1),(1),(2)
--extract data
SELECT * FROM @Tbl
--Populate BrandId with auto generated id
;WITH POPULATEBRANDID
AS
(
SELECT ID, BRANDID, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) AS [myBRANDID]
FROM @Tbl
)
UPDATE POPULATEBRANDID
SET BRANDID=myBRANDID
WHERE BRANDID IS NULL
--extract data
SELECT * FROM @Tbl
让我知道它是否适合你。