创建一个 SQL 报表,将聚合表达式的解决方案和子查询的结果视为不同的行



这里有点奇怪的问题。我们在这里使用Lansweeper作为我们的IT帮助台,它的报告是使用sql构建的。我们还能够使用这些报告制作图表。我的老板要求提供一张图表,显示我们今年更换计算机的进度。我想出的想法是一个饼图,随着计算机的更换,它逐渐填充。我正在使用的两个数据是:

  • 一个计数函数,用于计算本财年将要更换的计算机数量(计数(tblAssets.AssetID(函数,其中tblAssetCustom.Custom1 = '20'(
  • 一个子查询,它采用今年到期的计算机的原始数量 (115( 并从上面减去计数的数量,这给了我们已被替换的计算机总数。

因此,在年初,第一个数字将占据整个图表,第二个数字将设置为 0 (115-115(。当更换年份为 20 的计算机从系统中删除时,第一个数字将滴答作响,第二个数字将向上滴答。我的代码如下所示:

Select Top 1000000 Count(tblAssets.AssetID) As [Computers to be Replaced],
(Select 115 - Count(tblAssets.AssetID) As [Computers Replaced]) As
[Computers Replaced]
From tblAssets
Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID
Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblAssets.Assettype
Inner Join tblAssetGroupLink On tblAssets.AssetID = tblAssetGroupLink.AssetID
Inner Join tblAssetGroups On tblAssetGroups.AssetGroupID =
tblAssetGroupLink.AssetGroupID
Where tblAssetCustom.Custom1 = '20' And tblAssetCustom.State = 1 And
tblAssetGroups.AssetGroup = 'Computers'
Group By tblAssetCustom.Custom1

我离让它工作了这么近...我能够让报告为我需要使用的数字,但我需要弄清楚如何格式化报告,以便 Lansweeper 可以创建图表。我的报告是这样出来的。

我什至不确定这是否可能(我不是编码员,并且几乎没有令人惊讶地跛行到这一步(,但我需要弄清楚如何将我的列名作为一列中的条目,将我的数字放入另一列。一旦我可以将数据放入单独的行中,图表功能就会起作用。这可能吗?有人对如何处理这个问题有想法或建议吗?谢谢!

如果希望两个值位于不同的行上,则可以使用现有查询作为CTE,然后使用UNION分别获取值:

WITH CTE AS (
Select Count(tblAssets.AssetID) As [Computers to be Replaced],
115 - Count(tblAssets.AssetID) As [Computers Replaced]
From tblAssets
Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID
Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblAssets.Assettype
Inner Join tblAssetGroupLink On tblAssets.AssetID = tblAssetGroupLink.AssetID
Inner Join tblAssetGroups On tblAssetGroups.AssetGroupID =
tblAssetGroupLink.AssetGroupID
Where tblAssetCustom.Custom1 = '20' And tblAssetCustom.State = 1 And
tblAssetGroups.AssetGroup = 'Computers'
Group By tblAssetCustom.Custom1
)
SELECT 'Computers to be Replaced' AS name, [Computers to be Replaced] AS value
FROM CTE
UNION ALL
SELECT 'Computers Replaced', [Computers Replaced]
FROM CTE
ORDER BY name DESC

输出将如下所示

name                        value
Computers to be Replaced    53
Computers Replaced          62

最新更新