【发布时间】:2014-02-27 16:25:51
【问题描述】:
我目前遇到如下结果集:
| Month | LastWeekForMonth | ValueForLastWeekOfMonth |
| 2013-09 | 2013-40 | 981408,27 |
| 2013-10 | 2013-44 | 931209,12 |
| 2013-11 | 2013-48 | 1081302,00 |
| 2013-12 | 2013-52 | 935418,21 |
| 2014-01 | 2014-05 | 911402,11 |
| 2014-02 | 2014-09 | 991201,10 |
我使用以下查询计算:
SELECT C.Month
,RT.[Weekstamp] as LastWeekForMonth
,Sum([RevenueValue]) as ValueForLastWeekOfMonth
FROM [Database].[dbo].[fact_RevenueTable] RT
INNER JOIN CalenderWeekTable CW on RT.Weekstamp = CW.Weekstamp
INNER JOIN CalenderTable C on CW.KalenderID = C.KalenderID
WHERE RT.Probability <= 1
AND RT.Weekstamp IN (
SELECT max(CW.[Weekstamp])
FROM [Database].[dbo].[CalenderWeekTable] CW
INNER JOIN CalenderTable C on CW.KalenderID = C.KalenderID
WHERE C.Month >= @FromSQLMonth and C.Month < @ToSQLMonth
GROUP BY C.Month
)
GROUP BY RT.Weekstamp,C.Month
我现在需要的是:
| Month | LastWeekForMonth | ValueForLastWeekOfMonth | QuotientToPreviousMonth |
| 2013-09 | 2013-40 | 981408,27 | 1.04 |
| 2013-10 | 2013-44 | 931209,12 | 0.948849880794259 |
| 2013-11 | 2013-48 | 1081302,00 | 1.161180637921587 |
| 2013-12 | 2013-52 | 935418,21 | 0.8650850641171477 |
| 2014-01 | 2014-05 | 911402,11 | 0.9743258151880537 |
| 2014-02 | 2014-09 | 991201,10 | 1.087556292798137 |
所以我需要一个新的列来显示以下之间的商数:
ValueForLastWeekOfMonth / ValueForLastWeekOf上一个月份
现在向你们所有人提出问题,这些问题总是乐于助人的人们:
有没有办法在 SQL 中实现这一点?
由于我想在 SQL Server 中计算(或者如果是,在 SSIS 中),这意味着可以使用 SQL Server 2012 中提供的所有工具。
在此先感谢大家,期待您的回音!
【问题讨论】:
标签: sql sql-server reporting-services ssis