2016-02-19 139 views
-1
select a.dda_pk 
from direct_table a  
where a.dda_type = 'B' 
    and a.dda_status = 'D'   
    and a.dda_location = '01'  
group by a.dda_emp_idno  
having dda_pk < max(a.dda_pk) 
    and a.dda_status = 'D' 
    and a.dda_location = '01' 

列「direct_deposit_audit.dda_pk」是HAVING子句 無效。從Sybase SQL查詢轉換到SQL Server

+2

歡迎來到StackOverflow!你的問題可能會被關閉,因爲你不清楚你在問什麼。我的猜測是,您想知道您需要更改哪些內容才能使其在Microsoft SQL Server中正常工作。乍一看,它看起來會工作得很好,假設你在SQL Server中有相同的表'direct_table'。同時,請看[這篇有用的文章](http://stackoverflow.com/help/how-to-ask),它可以幫助你寫出能夠引發有用反應的問題。 –

+0

不,它不工作時,我在SQL Server中嘗試相同的查詢但同樣的查詢在sybase中運行良好! –

+1

它不起作用?您是否收到錯誤或意外結果?請修改您的問題以包含此信息。 –

回答

-1

全組的元素由必須在SELECT子句中,所以你可以試試這個:

select a.dda_pk 
from direct_table a  
where a.dda_type = 'B' 
and a.dda_status = 'D'   
and a.dda_location = '01'  
group by a.dda_pk  
having a.dda_pk < max(a.dda_pk) 
    and a.dda_status = 'D' 
    and a.dda_location = '01' 
+0

仍然我做了更改後,你要求我做同樣的錯誤! –

+0

@MANIKANTAYADAV請檢查我的查詢,現在編輯 –

+0

仍然我得到相同的錯誤 –

0

這是基於一個假設,即SQL每個dda_emp_idno 其中dda_pk小於返回行該dda_emp_idno的最大dda_pk。

這應該做同樣的事情在SQL Server:

select dda_pk 
from (
    select 
     dda_pk, 
     dense_rank() over (partition by dda_emp_idno order by dda_pk desc) as RN 
    from 
     direct_table a 
    where 
     a.dda_type = 'B' 
     and a.dda_status = 'D' 
     and a.dda_location = '01' 
) X 
where RN > 1 
+0

它做同樣的事情,但我無法看到輸出 –

+0

中的任何數據,當我運行原始查詢它是顯示一些數據,直到group by子句,但是當我運行整個查詢時,我在輸出中沒有得到任何數據。 –

+0

我原來的查詢是在sybase中返回5個表,並且在sql server中它沒有顯示任何數據。 –