Sql 如何使用PIVOT按日期排列数据

Sql 如何使用PIVOT按日期排列数据,sql,sql-server,tsql,pivot,Sql,Sql Server,Tsql,Pivot,我真的需要帮助,因为我的大脑已经不能再为这个工作了。因此,我有以下数据: 佩西德 乳酪酸盐 周/月(CreDate) 测试进展 Pes 1 30/03/2021 3-5 30% Pes 2 31/03/2021 3-5 20% Pes 180 02/04/2021 3-5 10% Pes 3 03/04/2021 3-5 25% Pes 1 03/04/2021 3-5 50% Pes 150 04/04/2021 4-1 30% Pes 1 06/04/2021 4-1 70% Pes 1 1

我真的需要帮助,因为我的大脑已经不能再为这个工作了。因此,我有以下数据:

佩西德 乳酪酸盐 周/月(CreDate) 测试进展 Pes 1 30/03/2021 3-5 30% Pes 2 31/03/2021 3-5 20% Pes 180 02/04/2021 3-5 10% Pes 3 03/04/2021 3-5 25% Pes 1 03/04/2021 3-5 50% Pes 150 04/04/2021 4-1 30% Pes 1 06/04/2021 4-1 70% Pes 1 12/04/2021 4-2 100% Pes 2 15/04/2021 4-2 50%
您必须仅使用基本列为轴心提供数据。您可能会注意到,我创建了一个列
MinDate
,它使用window函数
min()over()
,然后这是一个关于MinDate的顺序的小问题

简化版

示例

Set DateFormat DMY

Declare @YourTable Table ([PesID] varchar(50),[CreDate] date,[WeekOfMonth(CreDate)] varchar(50),[TestingProgress] varchar(50))  Insert Into @YourTable Values 
 ('Pes 1','30/03/2021','3-5','30%')
,('Pes 2','31/03/2021','3-5','20%')
,('Pes 180','02/04/2021','3-5','10%')
,('Pes 3','03/04/2021','3-5','25%')
,('Pes 1','03/04/2021','3-5','50%')
,('Pes 150','04/04/2021','4-1','30%')
,('Pes 1','06/04/2021','4-1','70%')
,('Pes 1','12/04/2021','4-2','100%')
,('Pes 2','15/04/2021','4-2','50%')

Select [PesID],[3-4],[3-5],[4-1],[4-2],[4-3]
  From (
        Select MinDate = min(CreDate) over (partition by [PesID])
              ,[PesID]
              ,[WeekOfMonth(CreDate)]
              ,[TestingProgress]
         From  @YourTable
       ) src
 Pivot (max([TestingProgress]) for [WeekOfMonth(CreDate)] in ( [3-4],[3-5],[4-1],[4-2],[4-3] ) ) pvt
 Order By MinDate
返回


您可以按照以下步骤操作,而不是表格:1。您可以在SSMS和2中复制带有标题的结果集。转到并粘贴结果集。3.将输出样式生成为Github标记,复制生成的标记表并粘贴到answer@VenkataramanR谢谢你的提示。实际上我更喜欢图像的视觉效果。然而,我有一个将OP的样本数据转换成表、临时表或变量的过程