- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个来自 SQL Server 的结果集,如下所示:
Zone M1 M2 M3 M4 M5 M6 M7
NORTH 6233 17743 2 6233 6717 7369 7369
SOUTH 12440 20017 7 8057 9724 13418 13418
WEST 33736 30532 5 2184 2056 1944 1944
EAST 3944 14584 2 728 953 970 970
CENTRAL 6233 3636 2 6233 6717 6825 6825
M NORTH SOUTH WEST EAST CENTRAL
M1 6233 12440 33736 3944 6233
M2 17743 20017 30532 14584 3636
M3 2 7 5 2 2
M4 ....
Zone M Value
EAST M1 6322
WEST M1 27387
EAST M2 2345
....
最佳答案
您需要做的是实现 UNPIVOT
的两步过程才能获得结果。然后是 PIVOT
功能。
第一步是到UNPIVOT
数据,这需要您的多列 M1
, M2
等并将它们转换为具有值和列名的两列:
select zone, value, col
from data
unpivot
(
value
for col in ([M1], [M2], [M3],
[M4], [M5], [M6], [M7])
) unpiv;
UNPIVOT
那么您可以申请
PIVOT
到
Zone
专栏:
select *
from
(
select zone, value, col
from data
unpivot
(
value
for col in ([M1], [M2], [M3],
[M4], [M5], [M6], [M7])
) unpiv
) src
pivot
(
sum(value)
for zone in ([North], [South], [West], [East], [Central])
) piv;
PIVOT
和
UNPIVOT
功能,然后您可以使用
UNION ALL
执行相同的操作为
UNPIVOT
和一个带有
CASE
的聚合函数复制
PIVOT
:
select col,
sum(case when zone='North' then value end) North,
sum(case when zone='South' then value end) South,
sum(case when zone='West' then value end) West,
sum(case when zone='East' then value end) East,
sum(case when zone='Central' then value end) Central
from
(
select zone, M1 value, 'M1' col
from data
union all
select zone, M2 value, 'M2' col
from data
union all
select zone, M3 value, 'M3' col
from data
union all
select zone, M4 value, 'M4' col
from data
union all
select zone, M5 value, 'M5' col
from data
union all
select zone, M6 value, 'M6' col
from data
union all
select zone, M7 value, 'M7' col
from data
) un
group by col
DECLARE @colsUnpivot AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX),
@colsPivot as NVARCHAR(MAX)
select @colsUnpivot = stuff((select ','+quotename(C.name)
from sys.columns as C
where C.object_id = object_id('data') and
C.name not in ('zone')
for xml path('')), 1, 1, '')
select @colsPivot = STUFF((SELECT distinct ','
+ quotename(Zone)
from data
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query
= 'select *
from
(
select zone, value, col
from data
unpivot
(
value
for col in ('+ @colsunpivot +')
) u
) unpiv
pivot
(
max(value)
for zone in ('+ @colspivot +')
) p'
exec(@query)
| COL | CENTRAL | EAST | NORTH | SOUTH | WEST |
-------------------------------------------------
| M1 | 6233 | 3944 | 6233 | 12440 | 33736 |
| M2 | 3636 | 14584 | 17743 | 20017 | 30532 |
| M3 | 2 | 2 | 2 | 7 | 5 |
| M4 | 6233 | 728 | 6233 | 8057 | 2184 |
| M5 | 6717 | 953 | 6717 | 9724 | 2056 |
| M6 | 6825 | 970 | 7369 | 13418 | 1944 |
| M7 | 6825 | 970 | 7369 | 13418 | 1944 |
关于SQL 查询 : How to rearrange the output (Transpose? ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13604643/
有 M,一个 n x n 矩阵,每个元素等于 0 或 1。 mij表示第 i 行和第 j 列中的条目。对角线条目是其中之一对某些 i 形成 mii。交换矩阵 M 的第 i 行和第 j 行表示以下操作:
支持numpy和torch 1.einops.rearrange 重新指定维度 2.einops.repeat 重排和重复(增加)维度 3.einops.reduce 1.einops.rearran
我有一个来自 SQL Server 的结果集,如下所示: Zone M1 M2 M3 M4 M5 M6 M7 NORTH 6233 17743
众所周知,Java 语言允许编译器重新排列已编译代码的行,只要重新排序对代码语义没有影响。然而,编译器只需要关心从当前线程中看到的语义。如果这种重新排序在多线程情况下影响语义,通常会导致并发问题(内存
我的数组对象如下例所示。 [ {'email':'test@gmail.com', 'name':'abc'}, {'email':'test1@gmail.com', 'name':'bbc'}
这是我目前的代码。请注意“percentageOff”和“originalPrices”是其中包含 float /整数的列表。 print("Percent off:", percentageOff[
我想知道一种算法(有效地)解决以下问题:数字 [1..9] 的二维矩阵需要从顶部 (1) 到底部 (9) 在水平线上对齐,但只能通过翻转用另一个数字垂直或水平。 示例输入矩阵: 1 8 2 6 1 6
我使用 ComponentFactoryResolver 动态创建组件 shown in the docs . // create a component each time this code is
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我对 Awesome 和 Lua 完全陌生,但我想实现的是在同一窗口布局中循环浏览我的窗口的不同排列。也许我没有使用正确的搜索词,但是一个简单的谷歌搜索没有产生任何有用的东西,我不想花时间研究 Lua
根据与x i 的绝对差值重新排列数组元素。即,具有最小差异的元素首先出现,依此类推。就像我正在服用array [10, 5, 3, 9, 2, 3] 和 x = 7 那么每个元素的绝对差应该是 = 7
我对如何在移动设备上重新排列面板有疑问。面板有不同的尺寸。页面大屏截图(col-lg)请见附件: 编辑:大屏幕布局没问题,因为我不希望行之间有任何空格,因为面板的高度不同。 当我在移动设备 (col-
基本上可以有一个或多个带有面板的控件,并且可以在它们之间拖动面板,或者在控件内滑动以更改位置、最小化或关闭。 如果缩小得太小,蓝色区域可以有滚动条。 这个有名字吗?有没有我可以尝试的 Java swi
首先,为 ggplot 指定分类变量顺序的方法是在 data.frame 中对其级别重新排序。其次,要在任何绘图上突出显示一个区域,我们可以使用 geom_rect。这里需要注意的是,不要将数据传递给
有谁知道默认或自定义 Sublime 命令会重新排列 Sublime Text 2 中选项卡的位置以避免用鼠标拖放选项卡。 例如: 在 sublime 窗口的最后一个选项卡上,命令: 键 + 键 +
一些上下文: 想写一个算法来接受来自客户端的票。根据某些约束对它们进行排序、处理它们,然后将结果回复给客户端。 我做了一些研究,虽然 Python 的 REST API 是个好主意。但当我探索它时,我
有谁知道默认或自定义 Sublime 命令会重新排列 Sublime Text 2 中选项卡的位置以避免用鼠标拖放选项卡。 例如: 在 sublime 窗口的最后一个选项卡上,命令: 键 + 键 +
一些上下文: 想写一个算法来接受来自客户端的票。根据某些约束对它们进行排序、处理它们,然后将结果回复给客户端。 我做了一些研究,虽然 Python 的 REST API 是个好主意。但当我探索它时,我
我有一个 table ,侧面有一个小按钮,它会自动移动到用户鼠标所在的任何行。当鼠标移动时,按钮的包含范围(以及其中的所有元素)将使用 insertBefore() 函数移动。然而,该按钮有一个已注册
我想弄清楚如何通过鼠标拖动上下移动预填充列表框中的项目。 我已经查看了 Microsoft 的 api 中的 Control.DoDragDrop 方法,但我仍然无法让它执行任何操作。 由于我是 Vi
我是一名优秀的程序员,十分优秀!