连接多个表以返回重复项

布伦斯1

我正在尝试以下select语句,包括来自4个表的列。但是结果将每行返回4次,我确定这是因为我有多个左联接,但是我尝试了其他联接却无法获得所需的结果。

    select table1.empid,table2.name,table2.datefrom, table2.UserDefNumber1, table3.UserDefNumber1, table4.UserDefChar6
from table1
inner join table2
on table2.empid=table1.empid
inner join table3
on table3.empid=table1.empid
inner join table4
on table4.empid=table1.empid

where MONTH(table2.datefrom) = Month (Getdate())

我需要它来返回没有重复的数据,因此每个条目只有1行。

我还希望最后的“ where Month”子句着眼于上个月而不是当前月份,但也要努力解决这一问题。

我对此有些陌生,所以我希望这是有道理的。

谢谢

弗洛

如果每列上重复的行相同,则可以使用DISTINCT关键字消除这些重复。

但是我认为您应该重新考虑您的JOINorWHERE子句,因为这些重复项必须有一个理由:

  1. WHERE子句在单个empid上击中table2中具有相同月份的几行
  2. 其他表之一中有几行具有相同的Empid
  3. 以上两个都是正确的

您可能希望通过WHERE / JOIN(而不是DISTINCT关键字)中的条件排除那些重复的行,因为当某些数据在原始结果集的单行中更改时,可能会发生意外行为。然后,您再次开始具有重复的Empid。

您可以通过以下子句检查日期是否在上个月:

date BETWEEN dateadd(mm, -1, datefromparts(year(getdate()), month(getdate()), 1)) 
AND datefromparts(year(getdate()), month(getdate()), 1)

此语句用于DATEFROMPARTS两次创建当前月份的开始,通过使用从第一个月份中减去一个月DATEADD(上个月初的结果),然后使用来检查是否date在这些日期之间BETWEEN

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

连接多个表以返回重复项

来自分类Dev

即使表不返回匹配项,Linq 从多个连接中选择并返回所有行

来自分类Dev

RegEx 返回多个非重复匹配项

来自分类Dev

Mysql 在 html 表中返回重复项

来自分类Dev

连接多个表时如何避免重复

来自分类Dev

SQL表具有多个重复项的联接-在一个日期范围内返回的计数小于X

来自分类Dev

使用 LINQ 连接多个表以返回列表

来自分类Dev

如何从表的多个连接返回不同的值

来自分类Dev

SQL Self连接表,默认为null并删除重复项

来自分类Dev

SQL连接两个表删除重复项

来自分类Dev

SELECT DISTINCT返回重复项-没有表JOIN

来自分类Dev

仅返回BigQuery表中包含重复项的最新行

来自分类Dev

SQL内部联接在访问表中返回重复项

来自分类Dev

SQL-如何显示多个表中的重复项

来自分类Dev

基于多个列值删除表中的重复项

来自分类Dev

VBA - 删除工作簿中多个工作表的重复项

来自分类Dev

SQL-重复的标签会在剩下多个连接时返回

来自分类Dev

MySQL连接表仅返回一个匹配项

来自分类Dev

Laravel 左连接多个表并返回原始表值

来自分类Dev

连接表时从SQL Server返回重复的数据

来自分类Dev

MySQL:连接多个表时获取重复值

来自分类Dev

在数据位于多个表中的MYSQL表中查找重复项(需要多个条件)

来自分类Dev

rxjs订阅返回重复项

来自分类Dev

Linq查询返回重复项

来自分类Dev

返回列表中的重复项

来自分类Dev

SQL查询返回重复项

来自分类Dev

Observable distinctUntilChanged 返回重复项

来自分类Dev

Postgres查询使用Knex删除多个连接数组中的重复项

来自分类Dev

如何使用 row_number() 过滤具有多个连接的重复项?

Related 相关文章

热门标签

归档