我想排名一系列交易,但是我的源數據並沒有捕獲一天可能發生多次的交易時間,我唯一可以使用的其他字段是timestamp
字段 - 這將排名是否正確?使用時間戳和日期時間的TSQL排名
下面的代碼
SELECT [LT].[StockCode]
, [LT].[Warehouse]
, [LT].[Lot]
, [LT].[Bin]
, [LT].[TrnDate]
, [LT].[TrnQuantity]
, [LT].[TimeStamp]
, LotRanking = Rank() Over (Partition By [LT].[Warehouse],[LT].[StockCode],[LT].[Lot] Order By [LT].[TrnDate] Desc, [LT].[TimeStamp] Desc)
From [LotTransactions] [LT]
返回
結果如下
StockCode |Warehouse |Lot |Bin |TrnDate |TrnQuantity |TimeStamp |LotRanking
2090 |CB |3036 |CB |2016-02-16 00:00:00.000 |2.000000 |0x0000000000500AB9 |1
2090 |CB |3036 |CB |2016-02-16 00:00:00.000 |2.000000 |0x0000000000500A4E |2
我明白答案,但upvote很好奇。 OP很清楚地表明日期欄中沒有時間分量。 –
'TimeStamp'上沒有'TrnDate',而是'SELECT CAST(0x0000000000500AB9 as datetime)'給出了這個:'1900-01-01 04:51:25.417'。 – gofr1
我應該補充說,將'timestamp' /'rowversion'視爲實際的日期,時間或日期時間值在SQL Server中顯然是一個壞主意。 upvotes從哪裏來? –