我困惑於相當混亂的查詢。查詢選擇屬於未返回用戶的每個產品的最後一個訂單(條目)
假設我有一個ProductLending表,用於跟蹤每個用戶借用的產品,更新的時間,是否返回等等。給定一個用戶,我希望能夠選擇所有仍然存在的獨特產品與用戶。
表例如:
userid DateRenewed ProductId isReturned
````````````````````````````````````````````````
1 2011-07-21 15 0
1 2011-08-20 16 0
1 2011-09-21 15 1
2 2011-09-21 17 0
1 2011-09-21 15 0
這是一個模擬了很抱歉,如果它是不準確的。
現在,在userId = 1的情況下,我想選擇僅返回的唯一productId,但是與用戶一起使用。所以這應該給我15,16作爲結果,因爲即使15返回,它被重新借用。如果我們刪除最後一行,那麼結果只會是16,因爲用戶只有他16。
我嘗試按dateRenewed排序並選擇top 1,但它完全做了別的..我該如何構建一個查詢?
我喜歡這一點,唯一的問題是如果IsReturned是一個位列(我期望它是)。如果你的列是位的,你將不得不將你的查詢改爲...- SUM(CAST(isReturned AS INT))> 0 –
當然。不知道MSSQL2008的規格,但SQL2005不支持真正的位列,afaik – rabudde
嗨,這似乎很奇怪,你的意思是說,「購買產品的總和必須比退貨產品的總和還要多 - **爲每個產品**「?因爲用戶可以借用5個產品,然後返回所有5個產品,所以現在,上面的假設是錯誤的,它將返回零行(這是我想要的) - 我是否理解正確?對不起,但這很混亂! – LocustHorde