是否可以使用WHERE或其他方式返回“ AS”结果?
我正在对FONE1列进行SUBSTRING并尝试返回DDD = 31,但出现错误, 代码:1054。“ where子句” 0.000秒中的未知列“ DDD”
->
SELECT **SUBSTRING(FONE1,1,2) AS DDD**, FONE1, F1STA,LASTCALL
FROM discador_processados
WHERE fila_mailing = 2638
AND F1STA ='ANSWER'
AND CLASSE1 IN ('VC2','VC3')
**AND DDD = 31**
AND LASTCALL BETWEEN '2020-10-02 00:00:00' AND '2020-10-30 23:59:59'
这个想法是将回报率降低
DDD FONE1 F1STA LASTCALL
31 31999999999 ANSWER 2020-10-02 09:08:13
31 31999999999 ANSWER 2020-10-02 09:09:16
31 31999999999 ANSWER 2020-10-02 09:17:41
谢谢!
答案 0 :(得分:1)
我建议将WHERE
编写为:
WHERE fila_mailing = 2638 AND
F1STA ='ANSWER' AND
CLASSE1 IN ('VC2', 'VC3') AND
FONE1 LIKE '31%' AND
LASTCALL >= '2020-10-02' AND
LASTCALL < '2020-10-31'
请注意对逻辑的更改:
FONE1
似乎是字符串,因此比较使用 string 操作。DATETIME
比较使用>=
和<
而不是BETWEEN
,因此不会错过最后一天的最后一秒。答案 1 :(得分:1)
您不能在WHERE
子句中使用输出列别名,因为尚未对输出列表达式求值,并且根本不存在hense。
但是您可以在HAVING
子句中这样做:
SELECT SUBSTRING(FONE1,1,2) AS DDD, FONE1, F1STA,LASTCALL
FROM discador_processados
WHERE fila_mailing = 2638
AND F1STA ='ANSWER'
AND CLASSE1 IN ('VC2','VC3')
AND LASTCALL BETWEEN '2020-10-02 00:00:00' AND '2020-10-30 23:59:59'
HAVING DDD = 31
请注意Gordon Linoff的答案-这非常有用。