【发布时间】:2018-01-30 15:47:53
【问题描述】:
在 SSMS 中,我有一个 Orders 事实表,如下所示:
Orders
ID GroupKey OrderID Amount DaysKey
----------------------------------------------
1 29 29422 23.93 14
2 29 29444 -13.28 101
3 29 29453 14.28 101
4 30 30194 100.00 103
5 32 30201 101.53 93
6 32 30291 50.00 121
我有一个看起来像这样的组维度
Groups
Key Name StyleKey AvgXX
-------------------------------------------
29 Blue 2 NULL
30 xyz 1 NULL
31 doesntmatter 2 NULL
32 Red 1 NULL
我有一个 Days 维度,如下所示: 天数
Key Day
------------
1 0
2 1
3 4
... ...
1000 999
我有一个样式维度,如下所示:
Style
Key Style
---------------
1 3.5
2 2
我要做的是用每个Style 的平均值Amount 填充Groups 表上的[AvgXX] 列,其中Day 大于或等于100。
例如,Red 组有一个StyleKey = 1。因此,AvgXX 列应该显示avg(Amount) 对应于StyleKey = 1 where Days >= 100。
请注意,应将具有相同 Days / DaysKey 的 Days 视为同一天(换句话说,如果我在第 100 天有 2 个条目均为 1,则两者的平均值应为 2 / 1 = 2 而不是 2 / 2 = 1 )。
我正在努力解决的问题更多是 UPDATE 语句,而不是带有几个连接的简单 select 语句。
通常,我会在可视化工具中进行这样的计算,但在这种情况下,很遗憾,我不能。
(注意:我昨天最初问了这个问题,但我写得不好所以不清楚。希望这更是如此)。
【问题讨论】:
-
尝试执行一个选择语句,以获得您想要的值。一旦你这样做了,更新就很容易了。另外,请edit您的帖子包含您当前的尝试和示例数据作为 DDL+DML(创建表并插入语句)和期望的结果。