【发布时间】:2017-02-17 08:21:27
【问题描述】:
我正在将数据拉到一个表中,该表有两个数据集加载到临时表中,最后插入到表中。有 2 条记录是重复的,但如果它们在一列上的值相同,我需要这两条记录,否则删除它。 col1 和 col4 是主键
col1 col2 col3 col4
--------------------
a ab abc x
a ab abc y
b ab abc y
b ab abc z
我想要的是忘记 col 2 和 col3,检查 col1 如果第 1 行和第 2 行相同,它应该检查 col4,如果第 1 行和第 2 行不同,它应该显示第 1 行和第 2 行,即使第 2 行和 col4 中的第 3 行相同。因此,如果记录如我所述,它应该允许所有 4 个值,但是根据我编写的逻辑,它返回 row1、row3、row4,因为它正在考虑 col 1 的 row2 和 row3 以及 col 4 的第 2 行第 3 行并且只显示 3记录,但我想要所有记录。请帮我在这种情况下如何在sql中编写逻辑。
【问题讨论】:
-
要清楚,你有一个 4 列的主键?!我建议跟进有关此表设计的问题。
-
col 1 和 col 4 是主键
-
请添加想要的结果
-
我很难遵循逻辑。你能输入你想要的结果吗?另外,请向我们展示您的尝试。
-
select row_number() over partition by col4 orderby col3 as rownum,col1,col2,col3,col4 from temptable group by col1,col2,col3,col4 where rownum=1 。是我试图从临时表中插入数据的逻辑,但这个逻辑只加载了 3 条记录。我想要我在表格中提到的所有四行
标签: sql