【发布时间】:2017-01-12 22:52:25
【问题描述】:
我想执行存储在 Amazon Redshift 上的字符串字段中的动态 SQL 查询。
我的背景主要是 T-SQL 关系数据库。我曾经动态构建 SQL 语句,将它们存储到变量中并执行它们。我知道 Redshift 可以准备和执行语句,但我想知道是否可以执行存储在字符串字段中的查询。
我有一段代码可以使用 pg_* 系统表在多个表上动态构建下面的代码。每个列/表名都是动态计算的。这是查询输出的示例:
SELECT h_article_id AS key, 'transport_parameters_weight_in_grams' AS col_name, COUNT(DISTINCT transport_parameters_weight_in_grams) AS count_value FROM dv.s_products GROUP BY h_article_id UNION ALL
SELECT h_article_id AS key, 'transport_parameters_width_in_mm' AS col_name, COUNT(DISTINCT transport_parameters_width_in_mm) AS count_value FROM dv.s_products GROUP BY h_article_id UNION ALL
SELECT h_article_id AS key, 'label_owner_info_communication_address' AS col_name, COUNT(DISTINCT label_owner_info_communication_address) AS count_value FROM dv.s_products GROUP BY h_article_id
我想在另一个查询中输入这段动态代码,以便进行一些统计,如下所示:
SELECT col_name, AVG(count_value*1.00) AS avg_count
FROM (
'QUERY ABOVE'
) A
GROUP BY col_name;
这将输出如下内容:
col_name avg_count
transport_parameters_weight_in_grams 1.00
transport_parameters_width_in_mm 1.00
label_owner_info_communication_address 0.60
我这样做的自然方法是将所有内容作为字符串存储在变量中并执行它。但是恐怕Redshift不支持这个。
是否有其他方法可以真正构建动态 SQL 代码?
【问题讨论】:
标签: sql dynamic amazon-redshift