2017-07-25 46 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