Sql-Server
計算資產條碼並按房間分組
我有 2 張桌子
Asset Register
和LocationRoom
. 我想計算每個房間的資產條碼數量。我希望輸出是資產條碼、描述、房間號的列表,並按房間計算資產。
例如房間 R0001 有 4 個資產 (01780,01781,01782,01783)。
這確實 Query 使用 XML 字元串連接來獲得您需要的格式的結果。
如果
AssetID
或Description
可以是 NULL 那麼你將不得不添加額外的邏輯SELECT '('+reverse(stuff(reverse(( SELECT A.[AssetID] +',' FROM [dbo].[AssetRegister] A WHERE A.LocationRoomID = AR.LocationRoomID FOR XML PATH(''))), 1, 2,''))+')' , '('+reverse(stuff(reverse(( SELECT A.[Description] +',' FROM [dbo].[AssetRegister] A WHERE A.LocationRoomID = AR.LocationRoomID FOR XML PATH(''))), 1, 2,''))+')' ,LR.[RoomNo] ,COUNT(*) FROM [dbo].[AssetRegister] AR INNER JOIN [dbo].[LocationRoom] LR on AR.LocationRoomID = LR.LocationRoomID GROUP BY LR.[RoomNo],AR.LocationRoomID;
編輯:
非常感謝您是否可以使用 AssetBarcode 01780, Dell Computer, R001, 4 獲得所有 19 行
SELECT AR.AssetID, AR.[Description], LR.[RoomNo], COUNT(*) OVER(PARTITION BY LR.RoomNo) FROM [dbo].[AssetRegister] AR INNER JOIN [dbo].[LocationRoom] LR on AR.LocationRoomID = LR.LocationRoomID
結果
AssetID Description RoomNo (No column name) 01780 DELL LAPTOP R0001 4 01781 DELL MONITOR R0001 4 01782 DELL CPU R0001 4 01783 DELL KEYBOARD R0001 4 01784 HP LAPTOP R0002 4 01785 HP MONITR R0002 4 01786 HP CPU R0002 4 01787 HP KEYBOARD R0002 4 01788 APPLE LAPTOP AIR R0003 8 ...*(19 rows)*