【问题标题】:Getting error while running an sql script in ADW在 ADW 中运行 sql 脚本时出错
【发布时间】:2018-11-21 15:35:02
【问题描述】:

收到如下错误:
插入值语句只能包含常量文字值或变量引用。

这些是我得到错误的语句:

INSERT INTO val.summary_numbers (metric_name, metric_val, dt_create) VALUES ('Total IP Enconters',
                                                                             (SELECT
                                                                                count(DISTINCT encounter_id)
                                                                              FROM prod.encounter
                                                                              WHERE encounter_type = 'Inpatient')

                                                                             ,
                                                                                (SELECT min(mod_loadidentifier)
                                                                                 FROM ccsm.stg_demographics_baseline)

                                                                             );


INSERT INTO val.summary_numbers (metric_name, metric_val, dt_create) VALUES ('Total 30d Readmits',
                                                                  (SELECT
                                                                     count(DISTINCT encounter_id)
                                                                   FROM prod.encounter_attr
                                                                   WHERE
                                                                     attr_name = 'day_30_readmit' AND attr_value = 1)

                                                                  ,
                                                                     (SELECT min(mod_loadidentifier)
                                                                      FROM ccsm.stg_demographics_baseline));

【问题讨论】:

    标签: azure azure-sqldw


    【解决方案1】:

    像这样更改您的查询:

    insert into val.summary_numbers
    select
            'Total IP Enconters',
            (select  count(distinct encounter_id)
             from    prod.encounter
             where   encounter_type = 'Inpatient'),
            (select  min(mod_loadidentifier)
             from    ccsm.stg_demographics_baseline)
    

    【讨论】:

    • 当我使用上述方法时,在 from 语句附近出现解析错误
    • @DeadMan 修复了一个括号。再试一次
    【解决方案2】:

    在使用 ADW 服务时,我建议您考虑使用CTAS 操作,可能与RENAME 结合使用。 RENAME 是元数据操作,因此速度很快,CTAS 是并行的,其中 INSERT INTO 将逐行进行。

    如果没有 create table 语句,您可能仍会遇到与数据相关的问题。

    谢谢

    【讨论】:

      猜你喜欢
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 2023-01-25
      • 2015-01-31
      • 1970-01-01
      • 2020-09-07
      • 2017-02-05
      相关资源
      最近更新 更多