如何比较SQL Server查询中的日期范围?
假设我在如下表格中有数据:如何比较SQL Server查询中的日期范围?,sql,sql-server,Sql,Sql Server,假设我在如下表格中有数据: | DateTimePurchased | Amount | |----------------------|--------| | 1/1/2017 3:23:15 PM | 657 | | 1/1/2017 3:38:29 PM | 730 | | Day | 2017_Total | 2018_Total | |-------|------------|------------| | Jan 1 | 4354653 | 7686
| DateTimePurchased | Amount |
|----------------------|--------|
| 1/1/2017 3:23:15 PM | 657 |
| 1/1/2017 3:38:29 PM | 730 |
| Day | 2017_Total | 2018_Total |
|-------|------------|------------|
| Jan 1 | 4354653 | 7686787 |
| Jan 2 | 3453634 | 6546456 |
我想运行一个输出如下的查询:
| DateTimePurchased | Amount |
|----------------------|--------|
| 1/1/2017 3:23:15 PM | 657 |
| 1/1/2017 3:38:29 PM | 730 |
| Day | 2017_Total | 2018_Total |
|-------|------------|------------|
| Jan 1 | 4354653 | 7686787 |
| Jan 2 | 3453634 | 6546456 |
等等
如何为SQL Server编写查询?我将这样表述:
select month(DateTimePurchased) as mm, day(DateTimePurchased) as dd,
sum(case when year(DateTimePurchased) = 2017 then amount end) as total_2017,
sum(case when year(DateTimePurchased) = 2018 then amount end) as total_2018
from t
group by month(DateTimePurchased), day(DateTimePurchased)
order by mm, dd;
这将“日期”分为两列,一列表示月份,一列表示日期。这实际上使结果更易于处理,因为您可以更轻松地对结果进行排序。Gordon Linoffs的答案是正确的 下面的查询正好提供了您所要求的内容
选择(左(DATENAME(MONTH,GETDATE()),3))+“”+CAST((DAY(DATE_ADDED))作为NVARCHAR(10))作为[DAY],
金额(如果年份(添加日期)=2017年,则金额结束)为[2017年总计],
金额(如果年份(添加日期)=2018年,则金额结束)为[2018年总计]
来自TBLDATE
按月份分组(添加日期),按天分组(添加日期)
按[日期]订购。
谢谢@gordon linoff!我很难适应这个做一个月比一个月的比较。例如,如果我想比较2017年2月和3月。很明显,他们没有相同的天数,但我想比较2月1日和3月1日,2月2日和3月2日,等等。。。你能帮忙吗?@Infin8Loop。这是一个不同的问题,所以作为一个不同的问题来问。一定要包括你想看到的结果。每个月怎么样?因此,行可能是日数(1、2、3、4),列可能是(2017年2月2日、2017年3月2日),等等。。。“我很难把这些放在一起。@Infin8Loop这是完全不同的查询和问题。你可以把它作为新问题发布。