使用 PIVOT 和 Group By 聚合直方图?
Using PIVOT and Group By to Aggregate histograms?
我在 SQL 服务器中有一个 table 包含大量二维直方图(每个直方图包含 32 个索引和值)如下:
这些直方图按时间序列记录,这意味着在每个特定日期我们都有一个具有唯一 ID 的直方图。我想获得这些直方图的平均值——每周——。这意味着对于一个月的每一周(如果那一周有数据),我想为每个唯一 ID 制作一个直方图。然后我想把这两个2d直方图转换成1d。最后,我想要的 table 应该有一行对应包含直方图值的每个唯一 ID。例如,我想在结尾处添加以下 table:
ID Date (year), Month , week , index1 , index2, ... , Index31 , Index32
273854048 2019 , 4 , 1 , 23 , 234 , ... , 0 , 95.00
287092805 2019 , 4 , 4 , 0.0 , 95.0 , ... , 43 , 64
... ...
好像应该用PIVOT和group by,但是好像很复杂
一个简单的枢轴子句就可以解决问题。
列将是 ID, Date, 1, 2, 3....
SELECT pvt.*
FROM YourTable t
PIVOT (
MIN(t.[Value]) FOR t.[Index] IN
([1]),([2]),([3]),([4]),([5]),([6]),([7]),([8]),([9]),([10]),([11]),([12]),([13]),([14]),([15]),([16]),([17]),([18]),([19]),([20]),([21]),([22]),([23]),([24]),([25]),([26]),([27]),([28]),([29]),([30]),([31]),([32])
) pvt
如有必要,您可以添加相关的ORDER BY
我在 SQL 服务器中有一个 table 包含大量二维直方图(每个直方图包含 32 个索引和值)如下:
这些直方图按时间序列记录,这意味着在每个特定日期我们都有一个具有唯一 ID 的直方图。我想获得这些直方图的平均值——每周——。这意味着对于一个月的每一周(如果那一周有数据),我想为每个唯一 ID 制作一个直方图。然后我想把这两个2d直方图转换成1d。最后,我想要的 table 应该有一行对应包含直方图值的每个唯一 ID。例如,我想在结尾处添加以下 table:
ID Date (year), Month , week , index1 , index2, ... , Index31 , Index32
273854048 2019 , 4 , 1 , 23 , 234 , ... , 0 , 95.00
287092805 2019 , 4 , 4 , 0.0 , 95.0 , ... , 43 , 64
... ...
好像应该用PIVOT和group by,但是好像很复杂
一个简单的枢轴子句就可以解决问题。
列将是 ID, Date, 1, 2, 3....
SELECT pvt.*
FROM YourTable t
PIVOT (
MIN(t.[Value]) FOR t.[Index] IN
([1]),([2]),([3]),([4]),([5]),([6]),([7]),([8]),([9]),([10]),([11]),([12]),([13]),([14]),([15]),([16]),([17]),([18]),([19]),([20]),([21]),([22]),([23]),([24]),([25]),([26]),([27]),([28]),([29]),([30]),([31]),([32])
) pvt
如有必要,您可以添加相关的ORDER BY