2017-07-25 41 views
1

我在尝试运行下面的脚本时遇到了困难。错误讯息话题:如何纠正此SQL脚本中的错误(使用Azure Datawarehouse的数据库)

ORDER BY子句在视图中无效,内联函数

insert into cc.s 
(
    id, 
    encid, 
    a_name, 
    a_des, 
    a_type, 
    a_value, 
    d_create 
) 
select 
    id, 
    encid, 
    'days_charge', 
    'Days 43', 
    'int', 
    (
     select 
      datediff(day,t_dis,a.ts_it) 
     from 
      cc.enoun 
     where 
      encid <> a.encid 
      and id=a.pe_id 
      and a_source='tEst' 
      and a.ts_admit > t_dis 
     order by 
      tdischarge desc limit 1 
    ) as attr_value, 
    getdate() 
from 
    cc.s a 
GO 
+0

你在用什么db /什么工具?尝试重新制定问题,以便不熟悉上下文的人能够理解 – xhudik

+0

我正在使用Azure Datawarehouse,并且还使用SSMS工具来编辑查询 –

回答

0

在脚本中,你要使用SELECT语句来获得a_value。你的问题在于这个select语句是你的内联函数。由于内联函数不能有ORDER BY子句,因此您只需将其删除即可。

insert into cc.s(id, encid, a_name, a_des, a_type, a_value, d_create) 
select id, encid,'days_charge','Days 43','int', 
(select datediff(day,t_dis,a.ts_it) from cc.enoun where encid<>a.encid and id=a.pe_id and a_source='tEst' and a.ts_admit>t_dis)   
as attr_value, 
getdate() 
from cc.s a 
GO 

还要确保您的内联语句只返回1个值。由于您试图使用ORDER BY子句,这可能意味着它会返回多个结果。

+0

内联函数可以返回更多的thEn一个值 –

+0

不可以。 让我们假设你有一个简单的查询: INSERT INTO table_1 VALUES(value1,value2,(SELECT a FROM table_2)) 如果你的内联函数(SELECT a FROM table_2)返回多个值,你会怎么做?您显然不能将它们全部添加到数据库中的一个条目中。 如果您需要,您可以在这里阅读更多信息:[link](https://www.tutorialspoint.com/sql/sql-sub-queries.htm) – Registeel1234