我正在尝试使用来自多个表(在SP中)的分组数据构建临时表,我成功构建了数据集但是我要求每个分组行都有唯一的ID。我知道有很多方法可以为每一行生成唯一的ID,但是我遇到的问题是,无论返回的行数是多少,我都需要每次运行时给定行的id都相同。
示例:
第一轮:
ID Column A Column B
1 apple 15
2 orange 10
3 grape 11
第二轮:
ID Column A Column B
3 grape 11
我想要这个的原因是因为我将此数据发送到 SOLR ,当我执行delta时,我需要将ID返回到与尝试重新索引<相同的行/ p>
我能做到这一点吗?
答案 0 :(得分:0)
不确定这是否有帮助,并不完全相信你的更广泛的画面,但...... 在汇总新数据时,将每个[column a]值记录在您自己的表中。 给该表一个IDENTITY列以便为您编号。
现在,您可以将任何新数据集加入查找表,并且每列A都有一个持久数字。
您只需确保每次查询新数据时都将新值添加到查找表中。
create table dbo.myRef(
idx int identity(1,1)
,[A] nvarchar(100)
)
总草案如下......
--- just simulating some input data here
with cte as (
select 'apple' as [A], 15 as [B]
UNION
select 'orange' as [A], 10 as [B]
UNION
select 'banana' as [A], 4 as [B]
)
select * into #temp from cte;
-- Put any new values into the lookup table
-- and they will be assigned a new index number by the identity column
insert into dbo.myRef([A])
select distinct [A]
from #temp where [A] not in (select [A] from dbo.myRef)
-- now pull your original data for output, joining to the lookup table to get a ref number.
select T.*,R.idx
from #temp T
inner join
oer.myRef R
on T.[A] = R.[A]
答案 1 :(得分:0)
很抱歉迟到的回复,我被其他东西困住了,但是我解决了自己的问题。
我构建了2个临时表,其中包含来自各个表(#master)和另一个临时表(#final)的所有数据,以容纳所有分组数据,其中包含ID的空列
接下来,我在#master的3列上做了一个concat(column1,' - ',column2,' - ',column3),并根据类型更新了#final表
这有助于我在每次运行中得到相同的concat ID