我有一个包含以下值的表
╔═══╦════╦════╦══════╦══════╗
║ b ║ l1 ║ l2 ║ l3 ║ l4 ║
╠═══╬════╬════╬══════╬══════╣
║ a ║ b1 ║ c1 ║ d1 ║ e1 ║
║ d ║ x1 ║ y1 ║ null ║ null ║
╚═══╩════╩════╩══════╩══════╝
输出应为:
╔═══════════╗
║ ab1c1d1e1 ║
║ ab1c1d1 ║
║ ab1c1 ║
║ ab1 ║
║ dx1y1 ║
║ dx1 ║
╚═══════════╝
有可能吗?我在这里看到一个模式,但能够弄清楚如何做到这一点。 P.S:ROLLUP无法使用,因为服务器不支持它。
答案 0 :(得分:6)
使用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
执行计划:
以下是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
执行计划:
答案 1 :(得分:0)
编辑:此增强型解决方案以裸字符串形式提供数据。如果这很快 - 我不知道。请让我知道......
self.navigationController.navigationBar.barTintColor = [UIColor orangeColor];