我正在使用Azure SQL数据库。我在下面的结构中有一个表,用于跟踪哪些人在不同的时间在不同的岗位上工作。提供简化版本:
CREATE TABLE PersonWorkload
(
WorkloadID INT PRIMARY KEY IDENTITY,
Post VARCHAR(30),
Period VARCHAR(12),
PersonID INT,
GroupID INT,
Notes VARCHAR(100)
)
这里有一个数据样本
INSERT INTO PersonWorkload (Post, Period, PersonID, GroupID, Notes)
VALUES
('Group Leader', 'Q1', 1, 1, NULL),
('Group Leader', 'Q2', 1, 1, NULL),
('Group Leader', 'Q3', 1, 2, NULL),
('Group Leader', 'Q4', 1, 2, NULL),
('Security', 'Q1', 3, 3, NULL),
('Security', 'Q2', 3, 3, NULL),
('Security', 'Q3', 4, 4, NULL),
('Security', 'Q4', 4, 4, NULL),
('Team member', 'Q1', 7, 5, NULL),
('Team member', 'Q2', 7, 5, 'Leaving programme this qtr'),
('Team member', 'Q3', 13, 6, NULL),
('Team member', 'Q4', 13, 6, NULL),
('Team member', 'Q1', 8, 7, NULL),
('Team member', 'Q2', 8, 7, NULL),
('Team member', 'Q3', 8, 7, NULL),
('Team member', 'Q4', 8, 7, NULL),
('Team member','Q1',9,8,'Temp posting'),
('Team member', 'Q2', 10, 9, NULL),
('Team member', 'Q3', 10, 9, NULL),
('Team member', 'Q4', 10, 9, NULL),
('Comms','Q2',11,10,NULL),
('Comms','Q3',11,10,NULL),
('Comms','Q4',11,10,NULL)
使用GroupID列是因为有时我需要一起处理一组这些帖子。新上任的人总是会触发一个新的群组,但有时一个人可以在一个职位上呆更长的时间,那段时间呢有时可以包含多个组名(所以如果一个人在一个职位上工作了一年,可能是一月到六月?有一个GroupID,七月到十二月有一个不同的GroupID)。
有时只有一个人同时担任一个职位,有时不止一个,有时没有人担任一个职位。
我需要旋转这些信息,以便为每个时期显示一列,以及谁在每个岗位上工作。每篇文章可能有一行或多行。
我已经创建了一个SQL PIVOT查询来实现这一点,并将结果放入一个临时表中。
下面是一个临时表的示例:
CREATE TABLE SampleData (
Post VARCHAR(100)
,GroupID INT
,[Q1] INT
,[Q2] INT
,[Q3] INT
,[Q4] INT
)
…以及填充它的语句:
INSERT INTO SampleData
SELECT *
FROM
(SELECT Post, Period, PersonID, GroupID
FROM PersonWorkload) t
PIVOT
(MAX(t.PersonID)
FOR t.Period IN ([Q1],[Q2],[Q3],[Q4])
) pvt
如果我包含groupID,我最终得到的数据来自我的PIVOT查询,看起来像这样:
正如@lptr在评论中提到的:
您可以向数据透视添加行编号列,以确保不合并唯一的行。
SELECT *
FROM (
SELECT
Post,
Period,
PersonID,
dense_rank() over (partition by Post, Period order by GroupID, PersonID) as rn
FROM PersonWorkload
) t
PIVOT
(MAX(t.PersonID)
FOR t.Period IN ([Q1],[Q2],[Q3],[Q4])
) pvt;
,db<的在小提琴
ROW_NUMBER()
也应该在这里工作
相关内容
- 没有找到相关文章
最新更新
- Swing JFileChooser只接受ZIP和Directory
- 这样定义react组件的原因是什么?
- 向3d numpy数组添加行向量
- AWS ECS Service Connect versus Service Discovery
- 根据MongoDB中的条件获取下一个和上一个文档
- 是否有办法使一个正在运行的进程处于D状态或Z状态?
- 使用最新版本的d3-path配置jest
- 为什么我的复制和粘贴代码出现"Object Required"错误?
- 模型元类与模型形式元类有何不同?
- 可以在不更改对象构造函数的情况下向对象构造函数添加新的动态参数吗
- 对于下面的CNN模型,我们需要优化多少个模型参数?
- typescript Redis客户端在类的构造函数?
- 无法从带有Java进程的Docker控制台分离
- 我可以列出一个数字,如果类实例在一个数组?
- 显示一次登录屏幕
- 如何获取defaultColDef中正在处理的单元格的列索引.网格中的cellClass
- 具有多个worker的可迭代pytorch数据集
- 如何在刀片模板内编写PHP代码
- BIM360提交API文档
- React Native API FETCH每个对象的不同名称
- 如何在Linux mongosh命令行上指定数据库以及身份验证
- GitHub Actions CodeQL初始化操作失败
- 不和谐.js "cannot read properties of undefined"尝试将事件处理程序放入单独的文件中时
- Woocommerce如何将钩子中的函数转换为短代码
- Oracle SELECT每个不同的列对每个不同的列
- 将复选框的字符串转换为布尔值
- 不能使用函数查找数组部分的和(javascript)
- 如何添加活动类点击角?
- 如何排序数组列表包含列表作为元素基于自定义所需的顺序
- 检查目录中是否存在文件的更好方法
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium