2015-06-22 82 views
0

我必須從多個值中統計獨特的狀態。這裏是我的表例如如何獲取SQL Server 2008中每個ID的最後插入值?

Id Status OrderId 
------------------- 
1  1  43 
2  2  43 
3  1  44 

所需的輸出

應該給出Status '1' is 1Status '2' is 1計數(狀態)。但是在使用時請給予2 for status '1'

+1

我認爲你有兩個1的狀態列。 –

+0

你試過什麼? –

+0

是的,我必須採取每個OrderId的最後一個值 – Priya

回答

1

你要做的

count(DISTINCT status) 

代替

count(status) 

得到

從多個值中的獨特地位。

編輯:

如果你想得到(不計數)爲每OrderIdStatus值最後插入記錄的,那麼你可以做:

SELECT Status 
FROM (
    SELECT Id, Status, OrderId, 
     ROW_NUMBER() OVER (PARTITION BY OrderId 
          ORDER BY Id DESC) AS rn 
FROM mytable) t 
WHERE t.rn = 1 
+0

但是如果我們使用COUNT(DISTINCT狀態),它與STATUS列的DISTINCT一樣好。我的意思是對於每個狀態,我們將COUNT(STATUS)設爲1 –

+1

@PareshJ這取決於OP想要「GROUP BY」的內容。 –

+0

其實它是我的查詢的一部分..我已經試過這個查詢與多個連接。我必須計算每個訂單ID的最後一個插入記錄 – Priya

0

如果你想得到每個訂單的最後status

with cte as(select *, row_number() 
         over(partition by OrderID order by Id desc) from TableName) 
select * from cte where rn = 1 

或者:

select * from (select *, row_number() 
         over(partition by OrderID order by Id desc) from TableName) t 
where rn = 1 
相關問題