我想从我的数据库导出特定数据并将其导入另一个数据库表。大多数数据都在一个表中,但在其他表中还有一些其他数据。大多数其他表只有一个所需数据的记录,但有些表有多个必需的记录。 例如:
Case
------------------
ID name status Sum
1 first 2 854
2 second 4 NULL
3 third 6 951
4 fourth 2 1430
Payments
----------------------------
CaseID Person payment
1 Peter 35
1 Robert 48
3 Oscar 630
4 Rob 85
3 Oscar 130
Documents
-----------------------------
CaseId DocTypeId RegNr
1 3 14335
1 4 43456
1 1 34533
2 5 23454
2 3 35532
我需要导出所有没有状态为“6”的案例,我需要他们的付款和可能不止一个的文件。我可以连接表,但是那些具有多个必需记录的表将创建具有相同列数据的其他行。
With join I could get something like this
ID name status Sum CaseId Person payment CaseId DocTypeId RegNr
1 first 2 854 1 Peter 35 1 3 14335
1 first 2 854 1 Robert 48 1 4 43456
1 first 2 854 1 Peter 35 1 1 34533
在这里你可以看到像这样我会得到重复的数据。如何在不重复的情况下获取数据?例如,一行中的所有数据?
我不想在数据库中导入重复数据,因为这真的很糟糕。 我怎样才能做到这一点?
我试着看一些sql server possibilites但找不到我需要的东西,所以我想我需要创建自己的脚本。
答案 0 :(得分:0)
我假设你在连接表输出中得到了所需的结果,除了它给你重复。您可以轻松忽略重复项,并在输出表中只插入一行。
创建一个视图,为您提供重复的排名。
CREATE view View1 as(select *,ROW_NUMBER() OVER(partition by names, status, some, person, payment Order by id) as rn from Your_join_table)
之后只需在输出表中输入等级1行
select * into output_table from View1 where rn = 1
希望它有所帮助!