SQL Server:通过选择第一个发生日期,联合所有ID,但删除重复ID
我联合了两个查询,但我得到了一个ID,该ID出现在每个查询中。我不知道如何只在id第一次出现时保存。这一排的其他一切都不同。一般来说,很难知道这两个查询中的哪一个需要保持重复,因此,我需要一个通用的解决方案 我在考虑创建一个临时表,并在日期转换为int后选择min日期SQL Server:通过选择第一个发生日期,联合所有ID,但删除重复ID,sql,sql-server,union,Sql,Sql Server,Union,我联合了两个查询,但我得到了一个ID,该ID出现在每个查询中。我不知道如何只在id第一次出现时保存。这一排的其他一切都不同。一般来说,很难知道这两个查询中的哪一个需要保持重复,因此,我需要一个通用的解决方案 我在考虑创建一个临时表,并在日期转换为int后选择min日期 关于正确的语法有什么想法吗?如果您使用关键字UNION,那么它将从您正在使用的两个数据集中删除重复项。联合所有保留重复项 您可以在此处查看详细信息: 如果使用关键字UNION,则它将从正在使用的两个数据集中删除重复项。联合所有保留
关于正确的语法有什么想法吗?如果您使用关键字UNION,那么它将从您正在使用的两个数据集中删除重复项。联合所有保留重复项 您可以在此处查看详细信息:
如果使用关键字UNION,则它将从正在使用的两个数据集中删除重复项。联合所有保留重复项 您可以在此处查看详细信息:
如果使用关键字UNION,则它将从正在使用的两个数据集中删除重复项。联合所有保留重复项 您可以在此处查看详细信息:
如果使用关键字UNION,则它将从正在使用的两个数据集中删除重复项。联合所有保留重复项 您可以在此处查看详细信息:
如果您只想拥有这两条记录中的一条,并且它们不完全相同,您必须自己过滤它们。您可能需要执行以下操作。这可能是一个select union select块可以完成的,但这应该可以让您开始
select *
from (
select id
, date
, otherstuf
from table_1
union all
select id
, date
, otherstuf
from table_2
) x1
, (
select id
, date
, otherstuf
from table_1
union all
select id
, date
, otherstuf
from table_2
) x2
where x1.id = x2.id
and x1.date < x2.date
尽管重新思考,如果你走这样的路,为什么还要费心把它联合起来呢 如果您只想拥有这两条记录中的一条,而它们又不完全相同,则必须自己过滤它们。您可能需要执行以下操作。这可能是一个select union select块可以完成的,但这应该可以让您开始
select *
from (
select id
, date
, otherstuf
from table_1
union all
select id
, date
, otherstuf
from table_2
) x1
, (
select id
, date
, otherstuf
from table_1
union all
select id
, date
, otherstuf
from table_2
) x2
where x1.id = x2.id
and x1.date < x2.date
尽管重新思考,如果你走这样的路,为什么还要费心把它联合起来呢 如果您只想拥有这两条记录中的一条,而它们又不完全相同,则必须自己过滤它们。您可能需要执行以下操作。这可能是一个select union select块可以完成的,但这应该可以让您开始
select *
from (
select id
, date
, otherstuf
from table_1
union all
select id
, date
, otherstuf
from table_2
) x1
, (
select id
, date
, otherstuf
from table_1
union all
select id
, date
, otherstuf
from table_2
) x2
where x1.id = x2.id
and x1.date < x2.date
尽管重新思考,如果你走这样的路,为什么还要费心把它联合起来呢 如果您只想拥有这两条记录中的一条,而它们又不完全相同,则必须自己过滤它们。您可能需要执行以下操作。这可能是一个select union select块可以完成的,但这应该可以让您开始
select *
from (
select id
, date
, otherstuf
from table_1
union all
select id
, date
, otherstuf
from table_2
) x1
, (
select id
, date
, otherstuf
from table_1
union all
select id
, date
, otherstuf
from table_2
) x2
where x1.id = x2.id
and x1.date < x2.date
尽管重新思考,如果你走这样的路,为什么还要费心把它联合起来呢 您可以使用row_number函数执行此操作。这将根据partition by子句为具有相同id的每一行分配一个从1开始的序列号。序列的顺序由ORDERBY子句决定。因此,下面为每个id的最早日期指定1:
最后一个where子句只过滤第一次出现的内容。您可以使用row\u number函数来完成此操作。这将根据partition by子句为具有相同id的每一行分配一个从1开始的序列号。序列的顺序由ORDERBY子句决定。因此,下面为每个id的最早日期指定1:
最后一个where子句只过滤第一次出现的内容。您可以使用row\u number函数来完成此操作。这将根据partition by子句为具有相同id的每一行分配一个从1开始的序列号。序列的顺序由ORDERBY子句决定。因此,下面为每个id的最早日期指定1:
最后一个where子句只过滤第一次出现的内容。您可以使用row\u number函数来完成此操作。这将根据partition by子句为具有相同id的每一行分配一个从1开始的序列号。序列的顺序由ORDERBY子句决定。因此,下面为每个id的最早日期指定1:
最后一个where子句只过滤第一次出现的内容。这太神奇了。非常感谢你!这太神奇了。非常感谢你!这太神奇了。非常感谢你!这太神奇了。非常感谢你!你没有比编辑我的查询更好的事吗?你没有比编辑我的查询更好的事吗?你没有比编辑我的查询更好的事吗?你没有比编辑我的查询更好的事吗?谢谢,从来没有想过。谢谢,从来没有想过。谢谢,从来没有想过。谢谢,从来没有想过。谢谢,从来没有想过。