【问题标题】:SQLite split column on another column's valueSQLite 在另一列的值上拆分列
【发布时间】:2021-03-09 03:37:48
【问题描述】:

我有一个数据库,其中多个变量显示为连续行(如下所示,变量由它们的标签区分)。因此,它们的值在“值”列中显示为连续行。

现有表:

为了进行数据分析,我需要将每个变量的值分成不同的列,如下图所示。

下面列出了 SQLite 查询。我曾尝试使用 GROUP BY 标记并对值进行平均,但结果变得过于细化而无用。

建议将不胜感激!

SELECT
        tag
        ,time
        ,value
FROM 
    [archive]..[interp]
WHERE 
    tag 
IN
    ( 'flow1.Val'           
     , 'flow2.Val'
     , 'density1.Val' 
     , 'density2.Val'
     )
  
AND 
    time 
BETWEEN 
    't-1d' and 't'
AND 
    timestep = '1h'

【问题讨论】:

    标签: sql sqlite pivot aggregate-functions


    【解决方案1】:

    您可以使用条件聚合:

    select time,
        max(case when tag = 'flow1.Val' then value end) as flow1_val,
        max(case when tag = 'flow2.Val' then value end) as flow2_val,
        max(case when tag = 'density1.Val' then value end) as density1_val,
        max(case when tag = 'density2.Val' then value end) as density2_val
    from [archive]..[interp]
    group by time
    

    根据您的实际要求,您可能希望使用除max() 之外的另一个聚合函数,如果给定时间/标签元组有不止一行。

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2019-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多