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列,我需要.
任何帮助,将不胜感激!
只需添加一些分组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)