【发布时间】:2015-08-03 02:01:55
【问题描述】:
我正在寻找一个视图,它将以以下格式输出数据
AgedPeriod BillValue Status
<1 35000 Outstanding
1-3 23386 Outstanding
3-6 5000 Outstanding
我可以使用下面的代码将每个 case 语句求和到一个新列中,我可以在上面列出的 AgedPeriod 之后命名列标题,但即使 SUMS 是正确的格式是错误的我想要代码下面嵌套在另一个不必按 b.BILL_DATE 分组的 CASE 语句中,因为与账单日期分组违背了我的 SUM 的目的。使用另一个 CASE 语句的所有尝试总是将 b.BILL_DATE 带出 SUM 并进入需要对其进行分组的 WHEN 条件。
SELECT
SUM(CASE WHEN (b.BILL_DATE <= GetDate()
AND b.BILL_DATE >= DateAdd(mm,-1, GetDate()))
THEN b.OUTSTANDING END),
SUM(CASE WHEN (b.BILL_DATE <= DateAdd(mm,-1, GetDate())
AND b.BILL_DATE >= DateAdd(mm,-3, GetDate()))
THEN b.OUTSTANDING END),
SUM(CASE WHEN (b.BILL_DATE <= DateAdd(mm,-3, GetDate())
AND b.BILL_DATE >= DateAdd(mm,-6, GetDate()))
THEN b.OUTSTANDING END)
FROM dbo.Tables
我知道这可能无法通过我目前采取的路线实现,但有没有其他方法可以SUM 每个时间段的未结金额?我可以处理状态栏(那里不需要建议)
我添加了一个表格和一些示例数据,并留下了一个查询以显示我希望如何拆分数据,但它希望它的格式如上(在一列中)
谢谢
【问题讨论】:
-
哪个 dbms? (例如 DateAdd 和 GetDate 是特定于产品的。)
-
如果您能向我们提供更详细的示例数据、表定义和预期结果,那么我们将能够提供更好的帮助
-
@jarlh 这是 SSMS 和 T-SQL
-
@Jeremy C 我试图简化这一点,以免混淆。预期的结果将如上。我将在主帖中添加一个链接以帮助提供更多详细信息。谢谢
-
如果三个年龄段是固定的,那么您可以使用 UNION 来代替。
标签: sql sql-server date sum case