【发布时间】:2016-09-02 08:53:19
【问题描述】:
在表格中,我有一个包含日期的字段,格式为 dd/mm/yyyy:
TBL_Metrics:
DATE | MetricValue
03/02/2015 | 99.1%
04/02/2015 | 97.3%
03/03/2015 | 94.5%
29/03/2015 | 93.6%
07/04/2015 | 43.9%
30/04/2015 | 94.2%
...
我想构建一个 sql 代码来查看所有这些日期,并且:
- 检测日期的月份
- 在每个月内,寻找最接近月底的日期 (在上面非常简短的示例中,2 月最接近月底的日期是 04/02/2015)
- 在选择查询中重复使用最接近月底的日期:
选择 TBL_Metrics.Date、TBL_Metrics.MetricValue FROM TBL_Metrics WHERE TBL_Metrics.Date in ('04/02/2015','29/03/2015','30/04/2015')
我不知道如何在 sql 中执行此操作,目前我在 VBA 中执行此操作,但它迫使我有一个与数据库连接的虚拟电子表格,首先检索所有日期,然后循环所有日期以查找最接近月底的日期,然后我可以构建查询以在另一个 spreqdsheet 中使用,这很混乱。
在这里给你一个想法是我如何在 vba 中找到最接近月底的日期:
dat1month = January
dat2month = February
dat3month = March
For i = 2 To LR
If MonthName(Month(ActiveSheet.Cells(i, 3))) = dat1month Then
If ActiveSheet.Cells(i, 3) > Dat1max Then
Dat1max = ActiveSheet.Cells(i, 3)
End If
ElseIf MonthName(Month(ActiveSheet.Cells(i, 3))) = dat2month Then
If ActiveSheet.Cells(i, 3) > Dat2max Then
Dat2max = ActiveSheet.Cells(i, 3)
End If
ElseIf MonthName(Month(ActiveSheet.Cells(i, 3))) = dat3month Then
If ActiveSheet.Cells(i, 3) > Dat3max Then
Dat3max = ActiveSheet.Cells(i, 3)
End If
End If
Next i
希望有人能帮忙! 非常感谢!
【问题讨论】:
-
请编辑您的问题以包括相关表的 DDL、一些示例数据(最好是 DML 语句)和所需的输出。
-
嗨 Zohar,抱歉,希望现在更清楚了
标签: sql sql-server-2008 date max