我正在使用Redshift,并且有一个查询,我正在其中运行多个聚合/文本字段解析操作。我将这些操作别名为自己的列名,然后稍后在查询中重用该别名以对数据执行其他操作。
代替将聚合/解析代码再次复制到查询的后续部分中,我在后续操作中使用别名列名;哪个Redshift似乎接受为有效用法,因为查询将完成(PostgreSQL不接受此为有效用法)。
例如:
-- How I've currently written my query.
SUM(widget_cost) AS total_widget_cost
, CASE WHEN total_widget_cost > 100.00 THEN '1' ELSE '0' END as widget_check
vs。
-- How I don't want to have to write my query.
SUM(widget_cost) AS total_widget_cost
, CASE WHEN SUM(widget_cost) > 100.00 THEN '1' ELSE '0' END as widget_check
DataGrip检查第一个版本时,如果在CASE
语句中重用,则会在别名“ total_widget_cost”上产生“未解决的引用”错误。话虽如此,该查询可以很好地编译,并且Redshift可以正确地解释查询,因为它可以返回准确的结果。
下面是我在实际代码中看到的屏幕截图:
我知道您可以禁止显示警告(alt + Enter->“ Inspection Unresolved Reference”选项->“ Suppress for Statement”),但是这样可以阻止出现有效错误,如果我已错误输入了表格名称,等等。
在帮助我使DataGrip能够“识别”这些别名方面的任何帮助将不胜感激!