【问题标题】:SQLite transpose using recursive CTE使用递归 CTE 的 SQLite 转置
【发布时间】:2016-11-30 10:44:24
【问题描述】:

鉴于此输入数据:

SEQ_ID SP_ID MASK STRING G_ID DEPTH PRESSURE
97 52361796 1 1 1 5.37 1941.0
97 52361796 1 1 2 5.77 1986.0
97 52361796 1 1 3 6.65 1922.0
....
97 52361800 1 1 1 5.76 1926.0
97 52361800 1 1 2 5.39 1922.0
97 52361800 1 1 3 6.85 2092.0

我如何像这样转置它:

SP_ID MASK P_01 ... P_027 D_01 D_027
52321798 2 0 ... 2084.0 ... 0 ... 2084.0 ...
52361796 1 1941.0 ... 0 ... 5.37 ... 0 ...
52361800 1 1926.0 ... 0 ... 5.76 ... 0 ...

到目前为止创建以上输出的代码:

    CREATE TEMP VIEW IF NOT EXISTS vInteractive AS 
    SELECT 
        SP_ID 
        , MASK 
        , SUM(CASE WHEN G_ID=1 THEN PRESSURE END) AS P_01 
        , SUM(CASE WHEN G_ID=27 THEN PRESSURE END) AS P_27 
        , SUM(CASE WHEN G_ID=1 THEN DEPTH END) AS D_01 
        , SUM(CASE WHEN G_ID=27 THEN DEPTH END) AS D_27 
    FROM vGun 
    GROUP BY SP_ID 
    ORDER BY SP_ID 
    ;

我想知道是否可以用递归 CTE 做一些更聪明的事情,而不是用这种蛮力编码 n 行的方法。

我知道 G_ID 的最大值以限制递归。

【问题讨论】:

    标签: sqlite recursion common-table-expression transpose


    【解决方案1】:

    CTE 具有固定数量的列,因此这是不可能的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多