选择具有特定不同列的整行

Dil*_*lis 1 sql t-sql sql-server

我有这个示例表,带有示例数据:

+-------------------+-----------------+------------+------------+
| OriginalBeginDate | OriginalEndDate | Start Date |  End Date  |
+-------------------+-----------------+------------+------------+
| 2015-06-01        | 2015-06-30      | 2015-08-01 | 2015-08-31 |
| 2015-06-01        | 2015-06-30      | 2015-09-01 | 2015-09-30 |
| 2015-06-01        | 2015-06-30      | 2015-10-01 | 2015-10-31 |
| 2015-06-01        | 2015-06-30      | 2015-11-01 | 2015-11-30 |
| 2015-06-01        | 2015-06-30      | 2015-12-01 | 2015-12-31 |
| 2015-07-01        | 2015-12-31      | 2015-08-01 | 2015-08-31 |
| 2015-07-01        | 2015-12-31      | 2015-09-01 | 2015-09-30 |
| 2015-07-01        | 2015-12-31      | 2015-10-01 | 2015-10-31 |
| 2015-07-01        | 2015-12-31      | 2015-11-01 | 2015-11-30 |
| 2015-07-01        | 2015-12-31      | 2015-12-01 | 2015-12-31 |
+-------------------+-----------------+------------+------------+
Run Code Online (Sandbox Code Playgroud)

如果你注意到,有一组5'开始日期'和'结束日期'重复,因为'OriginalBeginDate'和'OriginalEndDate'有两个'集'.

我需要只有一组最后两列(它们的不同值).

这是输出需要的样子:

| OriginalBeginDate | OriginalEndDate | Start Date |  End Date  |
+-------------------+-----------------+------------+------------+
| 2015-06-01        | 2015-06-30      | 2015-08-01 | 2015-08-31 |
| 2015-06-01        | 2015-06-30      | 2015-09-01 | 2015-09-30 |
| 2015-06-01        | 2015-06-30      | 2015-10-01 | 2015-10-31 |
| 2015-06-01        | 2015-06-30      | 2015-11-01 | 2015-11-30 |
| 2015-06-01        | 2015-06-30      | 2015-12-01 | 2015-12-31 |
+-------------------+-----------------+------------+------------+
Run Code Online (Sandbox Code Playgroud)

如果我跑

SELECT DISTINCT * FROM myTable
Run Code Online (Sandbox Code Playgroud)

我得到了整张桌子.如果我跑

SELECT DISTINCT [START DATE], [END DATE] FROM myTable
Run Code Online (Sandbox Code Playgroud)

我没有得到所有4列,我需要.

任何帮助,将不胜感激!

Tan*_*ner 5

只需添加一些分组MIN即可获取其他列的最低值,这看起来就像您所追求的:

SELECT MIN(OriginalBeginDate) as OriginalBeginDate, 
       MIN(OriginalEndDate) as OriginalEndDate, 
       [START DATE], 
       [END DATE] 
FROM myTable
GROUP BY [START DATE], [END DATE]
Run Code Online (Sandbox Code Playgroud)