sql-server - 将列名映射到行
问题描述
我想知道如何将列更改为行,将行更改为列。这是我正在努力实现的目标。
USE [master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Main](
[RowDate] [datetime] NULL,
[Name] [varchar](50) NULL,
[Level_1] [int] NULL,
[Level_2] [int] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
客观的:
-RowDate 将成为一个不同的列。-Level_1 Level_2 将是不同的行标题
这是我所拥有的,与指南相去甚远,但与我想要实现的目标相去甚远。
SELECT countt, Level_Details
FROM [master].[dbo].[Main]
UNPIVOT (
countt FOR Level_Details IN (
Level_1, Level_2
)
) unpvt
解决方案
您走在正确的道路上...首先取消透视您的数据,然后进行透视
但是,我假设您需要动态列,因此动态 SQL
例子
Declare @SQL varchar(max) = '
Select *
From (
Select Level_Type,RowDate,Value
From YourTable
Unpivot (Value for Level_Type in ([Level_1],[Level_2]) ) Unpiv
) Src
Pivot (sum(Value) for RowDate in ('+ Stuff((Select Distinct ',' + QuoteName([RowDate]) From Yourtable Order by 1 For XML Path('')),1,1,'') +')) pvt
'
Exec(@SQL)
退货
Level_Type 2019-01-20 2019-01-21
Level_1 40 20
Level_2 80 30
推荐阅读
- javascript - 我可以滚动到另一个组件模板中的 HTML 元素吗?
- asp.net - docker asp.net 日志配置也启用日志错误
- c++ - AXI 协议中的突出行为
- sapui5 - 单击选择中的任何项目时触发事件(即使在选定的项目上)
- python - 如何在 Python 中序列化 json?
- c - 为什么 Valgrind 抱怨 fgets?
- java - JdbcTemplate - 没有可用类型的限定 bean
- javascript - 如何根据SectionList中的键在ui上填充数组的值
- android - Android中的TimePickerDialog并添加到数据库
- discord - 如何通过不和谐机器人列出用户