【问题标题】:Export and import selected rows导出和导入选定的行
【发布时间】:2017-10-10 14:47:17
【问题描述】:

我想从我的数据库中导出特定数据并将其导入到另一个数据库表中。大多数数据都在一个表中,但其他表中还有一些附加数据。大多数其他表只有一条所需数据的记录,但有些表有多个所需记录。 例如:

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 但找不到我需要的东西,所以我想我需要创建自己的脚本。

【问题讨论】:

  • 您可以发布您正在使用的查询以及您想要的结果吗?不清楚你用somemost 说的是什么。
  • Case ID 1 是为 Peter 和 Robert 定义的 - 所以正确的是 - 如果您通过 case ID 加入 - 您会收到两行...请发布您使用的 Join 查询。
  • 我还没有创建整个查询,只是想着如何才能满足我的需求,因为我现在不知道该怎么做。但是对于创建重复的案例 ID 1,这将在导入后破坏数据。

标签: sql sql-server import export


【解决方案1】:

我假设您在连接表输出中获得了所需的结果,但它会为您提供重复项。您可以轻松地忽略重复项并在输出表中仅插入一行。

创建一个可以为您提供重复排名的视图。

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

希望对你有帮助!

【讨论】:

  • 我有点困惑,因为我没有使用过视图(对数据库来说还很新)。我怎么能通过这个导入所有需要的数据?我不需要手动完成所有行吗?我可以在不丢失任何内容的情况下导入所有数据吗?
  • 视图是虚拟表,所以基本上你是在创建一个临时表来获取你需要的所有行。拥有它后,只需获取所需的唯一行。您发布的连接表是否包含您需要的所有数据?如果是,请按照我的指示进行操作。你很亲密!
  • 这是我需要的简化版本,我必须从更多表中获取数据。我将尝试创建整个查询,看看是否可以从我的连接表中的所有表中获取所有必需的列。谢谢你,我会尝试创建它。
猜你喜欢
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-06
  • 2019-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多