![]() |
1
2
SQL语言具有
你知道前面每列的数量和类型。查询优化器/数据库引擎需要这一点,以便构建高效的执行计划并评估查询中使用的列的权限。甚至使用
您所要求的内容要求结果中的列数由数据确定,直到 之后 创建执行计划。这是不允许的。实现这一点的唯一方法是通过动态SQL,其中有三个步骤。首先运行SELECT以获取所需的列。然后使用该数据动态构建新的查询字符串。最后,执行刚刚构建的查询字符串并将数据返回给用户。 |
![]() |
2
0
通常,如果没有动态SQL,您没有很多选项。您需要在中使用别名
在Oracle中,您可以通过以下方式获得更好的结果:
|
![]() |
3
0
我不明白你的目标,为什么B的201802收入会在201801收入中回归。
+----------+----------------+---------------+----------------+---------------+ | customer | Revenue 201801 | Profit 201801 | Revenue 201802 | Profit 201802 | +----------+----------------+---------------+----------------+---------------+ | a | 110 | 12 | NULL | NULL | | b | NULL | NULL | 200 | 20 | +----------+----------------+---------------+----------------+---------------+ |
![]() |
Community wiki · SQL语法新手 1 年前 |
|
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
![]() |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
![]() |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |