tec*_*hno 8 mysql sql sql-server concatenation recursive-query
我有一个包含如下值的表
?????????????????????????????
? b ? l1 ? l2 ? l3 ? l4 ?
?????????????????????????????
? a ? b1 ? c1 ? d1 ? e1 ?
? d ? x1 ? y1 ? null ? null ?
?????????????????????????????
Run Code Online (Sandbox Code Playgroud)
输出应该是:
?????????????
? ab1c1d1e1 ?
? ab1c1d1 ?
? ab1c1 ?
? ab1 ?
? dx1y1 ?
? dx1 ?
?????????????
Run Code Online (Sandbox Code Playgroud)
可能吗?我在这里看到一个模式,但能够弄清楚如何做到这一点.PS:ROLLUP不能用作服务器不支持它.
使用UNION ALL:
SELECT * FROM(
SELECT b + l1 + l2 + l3 + l4 FROM tbl UNION ALL
SELECT b + l1 + l2 + l3 FROM tbl UNION ALL
SELECT b + l1 + l2 FROM tbl UNION ALL
SELECT b + l1 FROM tbl
) AS t(a)
WHERE a IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
执行计划:
这是另一种方法UNPIVOT,这将只扫描一次表:
SELECT x.a
FROM tbl t
CROSS APPLY(VALUES
(b + l1 + l2 + l3 + l4),
(b + l1 + l2 + l3),
(b + l1 + l2),
(b + l1)
) AS x(a)
WHERE a IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
执行计划:
| 归档时间: |
|
| 查看次数: |
316 次 |
| 最近记录: |