需要在按不匹配日期(SQL和Python)分组的2个索引上转换一些SQL值
我包括了一个图像,显示了我试图在SQL中执行的操作。左边的表是我在服务器上运行SQL查询得到的。我正在尝试使用SQL/Python创建右侧的表。我会使用一个透视图,但是作为一个透视图聚合值,我必须获取组件编号列的平均值、总和、最小值、最大值或其他值。实际上,我需要一个2指数转置。可以对每个序列号进行多个测试。我需要在第一个测试值列中显示第一个测试的日期,第二个、第三个或第四个测试也是如此。我需要在“测试1”、“测试2”、“测试3”中显示每个序列号和每个组件的值。棘手的是,测试1、测试2和测试3对于每个零件都是不同的,但是它们仍然需要按照每个序列号的顺序测试日期分组到存储桶中 如果有人能帮我找到一些方法,或者帮我生成一些伪代码,我将不胜感激。谢谢 以下是表格图像的链接: 左边是我的SQL查询拉取的内容,右边是我想要的内容需要在按不匹配日期(SQL和Python)分组的2个索引上转换一些SQL值,python,sql,pivot,Python,Sql,Pivot,我包括了一个图像,显示了我试图在SQL中执行的操作。左边的表是我在服务器上运行SQL查询得到的。我正在尝试使用SQL/Python创建右侧的表。我会使用一个透视图,但是作为一个透视图聚合值,我必须获取组件编号列的平均值、总和、最小值、最大值或其他值。实际上,我需要一个2指数转置。可以对每个序列号进行多个测试。我需要在第一个测试值列中显示第一个测试的日期,第二个、第三个或第四个测试也是如此。我需要在“测试1”、“测试2”、“测试3”中显示每个序列号和每个组件的值。棘手的是,测试1、测试2和测试3对
您可以使用
行数()
和条件聚合:
select
serial_number,
component_number
max(case when rn = 1 then test_value end) test1,
max(case when rn = 2 then test_value end) test2
from (
select
t.*,
row_number() over(partition by serial_number, component_number order by test_date) rn
from mytable t
) t
group by serial_number, component_number
在子查询中,
row\u number()
为共享相同serial\u number
和component\u number
的组中的每个记录分配一个等级。然后,外部查询通过serial\u number
和component\u number
进行聚合,并根据列的秩将test\u value
s accross列分散开来。您可以使用更多的条件max()
s扩展外部查询的select
子句,以处理每个(序列号、组件号)
元组的两个以上测试。您可以使用行号()
和条件聚合:
select
serial_number,
component_number
max(case when rn = 1 then test_value end) test1,
max(case when rn = 2 then test_value end) test2
from (
select
t.*,
row_number() over(partition by serial_number, component_number order by test_date) rn
from mytable t
) t
group by serial_number, component_number
在子查询中,
row\u number()
为共享相同serial\u number
和component\u number
的组中的每个记录分配一个等级。然后,外部查询通过serial\u number
和component\u number
进行聚合,并根据列的秩将test\u value
s accross列分散开来。您可以使用更多的条件max()
s扩展外部查询的select
子句,以处理每个(序列号、组件号)
元组的两个以上测试。谢谢!我将致力于实现这一点,并让你知道它是如何进行的。很抱歉延迟答复。我可以确认你的解决方案有效。谢谢,我非常感谢你的帮助!谢谢我将致力于实现这一点,并让你知道它是如何进行的。很抱歉延迟答复。我可以确认你的解决方案有效。谢谢,我非常感谢你的帮助!