簡體   English   中英

如何獲取SQL Server 2008中每個ID的最后插入值?

[英]How to get the last inserted value for every id in SQL Server 2008?

我必須從多個值中計算唯一狀態。 這是我的桌子的例子

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

所需的輸出

它應該給出Status '1' is 1的計數(狀態)為Status '1' is 1Status '2' is 1 但是,當使用count時,其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

如果要獲取每個訂單的最新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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM