相关疑难解决方法(0)

如何选择行和附近的行

SQL小提琴

背景

我有一些值得注意的值表:

| ID      | AddedDate   |
|---------|-------------|
|       1 | 2010-04-01  |
|       2 | 2010-04-01  |
|       3 | 2010-04-02  |
|       4 | 2010-04-02  |
|       5 | NULL        | <----------- needs attention
|       6 | 2010-04-02  |
|       7 | 2010-04-03  |
|       8 | 2010-04-04  |
|       9 | 2010-04-04  |
| 2432659 | 2016-06-15  |
| 2432650 | 2016-06-16  |
| 2432651 | 2016-06-17  |
| 2432672 | 2016-06-18  |
| 2432673 | …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2012

15
推荐指数
1
解决办法
1110
查看次数

根据匹配的列进行选择

我有两张桌子,里面都有不同的公司.我想选择tableOne出现的所有内容tableTwo(事实上​​,只有它出现在内tableTwo).我会通过比较他们的companyID领域来做到这一点.它们还必须具有相同的列值someYear.因此,换句话说,我要回出现在公司tableTwotableOne,当且仅当其someYear列相匹配.

tableOne

companyID    someYear
---------    --------
1            2010
2            2009
3            2011
1            2011
7            2009


tableTwo

companyID    someYear
---------    --------
1            2010
2            2008
3            2011
4            2011
5            2009
Run Code Online (Sandbox Code Playgroud)

我想回到13(公司2的年不同的,所以我不希望它).我无用的尝试:

SELECT one.* 
FROM tableOne one, tableTwo two
WHERE one.[companyID] in (
  SELECT DISTINCT companyID
  FROM tableTwo
)
and one.someYear = two.someYear;
Run Code Online (Sandbox Code Playgroud)

这里的问题是,当两个表包含少于10,000个条目时,它返回数百万行.由于敏感信息,我无法完全重新创建输出.这里的表/列名称都是由我确定你能说出来的.另外我应该指出,两个表似乎都没有主键.我认为这导致他们无法匹配.我正在使用SQL Server 2008.任何帮助都将非常感激.

sql sql-server sql-server-2008

4
推荐指数
1
解决办法
7630
查看次数