我必須從多個值中統計獨特的狀態。這裏是我的表例如如何獲取SQL Server 2008中每個ID的最後插入值?
Id Status OrderId
-------------------
1 1 43
2 2 43
3 1 44
所需的輸出
應該給出Status '1' is 1
和Status '2' is 1
計數(狀態)。但是在使用時請給予2 for status '1'
。
我必須從多個值中統計獨特的狀態。這裏是我的表例如如何獲取SQL Server 2008中每個ID的最後插入值?
Id Status OrderId
-------------------
1 1 43
2 2 43
3 1 44
所需的輸出
應該給出Status '1' is 1
和Status '2' is 1
計數(狀態)。但是在使用時請給予2 for status '1'
。
你要做的
count(DISTINCT status)
代替
count(status)
得到
從多個值中的獨特地位。
編輯:
如果你想得到(不計數)爲每OrderId
的Status
值最後插入記錄的,那麼你可以做:
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
但是如果我們使用COUNT(DISTINCT狀態),它與STATUS列的DISTINCT一樣好。我的意思是對於每個狀態,我們將COUNT(STATUS)設爲1 –
@PareshJ這取決於OP想要「GROUP BY」的內容。 –
其實它是我的查詢的一部分..我已經試過這個查詢與多個連接。我必須計算每個訂單ID的最後一個插入記錄 – Priya
如果你想得到每個訂單的最後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
我認爲你有兩個1的狀態列。 –
你試過什麼? –
是的,我必須採取每個OrderId的最後一個值 – Priya