最近给公司做财务运营计费系统,需要把一个包含大量公式的 excel 转化为 mysql。excel 里面有 VLOOKUP,IF 等各种类型的公式,VLOOKUP 我用子查询实现,IF 用 CASE WHEN THEN END 实现。现在遇到这样一个问题:
SELECT *, (SELECT A FROM CIC WHERE CIC.PROJECT_ALIAS=C.PROJECT_ALIAS) AS CHARGE_MODE, CASE WHEN CHARGE_MODE='分钟' THEN F1 ELSE F2 END FROM C
这样一个 SQL 语句报错,说找不到 CHARGE_MODE。(这是简化了的 sql 示意)
也就是说想在 SELECT 后面的列中使用前面的列的别名,结果报错。不知道有没有什么的办法绕过这一问题?
实在不行只有用嵌套的 SELECT,在外层的 SELECT 中使用里层 SELECT 的列别名,但是财务的 excel 公式特别多,这样处理需要嵌套很多层,估计查询速度会很慢。
1
Fishdrowned 2019-03-08 16:57:05 +08:00
no where, having
|
2
gz911122 2019-03-08 17:18:47 +08:00
业务逻辑挪到代码实现好了
sql 就别搞那么多骚操作了 后面的人看着都头晕 |
3
l00t 2019-03-08 17:24:39 +08:00
查询慢只会是你语句本身就慢的关系,不会是这种程度的嵌套导致的问题。写这种类型的嵌套,唯一慢的是写起来慢。
要写起来方便?建个视图吧。 |