Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要在按不匹配日期(SQL和Python)分组的2个索引上转换一些SQL值_Python_Sql_Pivot - Fatal编程技术网

需要在按不匹配日期(SQL和Python)分组的2个索引上转换一些SQL值

需要在按不匹配日期(SQL和Python)分组的2个索引上转换一些SQL值,python,sql,pivot,Python,Sql,Pivot,我包括了一个图像,显示了我试图在SQL中执行的操作。左边的表是我在服务器上运行SQL查询得到的。我正在尝试使用SQL/Python创建右侧的表。我会使用一个透视图,但是作为一个透视图聚合值,我必须获取组件编号列的平均值、总和、最小值、最大值或其他值。实际上,我需要一个2指数转置。可以对每个序列号进行多个测试。我需要在第一个测试值列中显示第一个测试的日期,第二个、第三个或第四个测试也是如此。我需要在“测试1”、“测试2”、“测试3”中显示每个序列号和每个组件的值。棘手的是,测试1、测试2和测试3对

我包括了一个图像,显示了我试图在SQL中执行的操作。左边的表是我在服务器上运行SQL查询得到的。我正在尝试使用SQL/Python创建右侧的表。我会使用一个透视图,但是作为一个透视图聚合值,我必须获取组件编号列的平均值、总和、最小值、最大值或其他值。实际上,我需要一个2指数转置。可以对每个序列号进行多个测试。我需要在第一个测试值列中显示第一个测试的日期,第二个、第三个或第四个测试也是如此。我需要在“测试1”、“测试2”、“测试3”中显示每个序列号和每个组件的值。棘手的是,测试1、测试2和测试3对于每个零件都是不同的,但是它们仍然需要按照每个序列号的顺序测试日期分组到存储桶中

如果有人能帮我找到一些方法,或者帮我生成一些伪代码,我将不胜感激。谢谢

以下是表格图像的链接: 左边是我的SQL查询拉取的内容,右边是我想要的内容


您可以使用
行数()
和条件聚合:

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
子句,以处理每个
(序列号、组件号)
元组的两个以上测试。

谢谢!我将致力于实现这一点,并让你知道它是如何进行的。很抱歉延迟答复。我可以确认你的解决方案有效。谢谢,我非常感谢你的帮助!谢谢我将致力于实现这一点,并让你知道它是如何进行的。很抱歉延迟答复。我可以确认你的解决方案有效。谢谢,我非常感谢你的帮助!