可以说我有如下表变量:获得状态计数有许多状态项
DECLARE @DevicesAndStatuses TABLE (Id BIGINT,[Status] INT);
DECLARE @myId BIGINT;
SET @myId = 1;
里面上面的表格,我可以有成千上万的IDS(ID可以是重复的)和状态1-50范围。获得某个特定ID所有状态的最有效方法是什么?
,我有传统的方法如下:
SELECT
(SELECT COUNT(*) FROM @DevicesAndStatuses WHERE Id = @myId AND [Status] = 1) AS Status1,
(SELECT COUNT(*) FROM @DevicesAndStatuses WHERE Id = @myId AND [Status] = 2) AS Status2,
(SELECT COUNT(*) FROM @DevicesAndStatuses WHERE Id = @myId AND [Status] = 3) AS Status3,
(SELECT COUNT(*) FROM @DevicesAndStatuses WHERE Id = @myId AND [Status] = 4) AS Status4,
...
(SELECT COUNT(*) FROM @DevicesAndStatuses WHERE Id = @myId AND [Status] = 50) AS Status50,
FROM @DevicesAndStatuses WHERE Id = @myId
是否有可能为让所有的状态[1-50]的计数特定ID的任何更好的解决方案?
最终的结果应该是包含50列显示的每一个状态作为状态1,状态2,...,Status50 *计数()
我想要的结果为每地位状态1,状态2,... COUNT(*),Status50 – MHOOS