【问题标题】:How to create a matrix in SQL Server Management Studio 2012如何在 SQL Server Management Studio 2012 中创建矩阵
【发布时间】:2021-11-10 01:21:31
【问题描述】:

我必须在数据库中进行数据监控。由于安全功能,我没有获得管理员权限。

我必须创建一个矩阵,我必须每天计算数据库在唯一键上的行数。

所以目前我每天都运行查询:

select Count(Uniquekey)
from TableName 
where RecordCreatedDate < '2021-09-14' 
order by RecordCreatedDate desc

然后我在 Excel 中创建一个我写的表格

Date_For_Data Date_data_checked Count 
09/09/2021     09/09/2021       100
10/09/2021     10/09/2021       120 
11/09/2021     11/09/2021       130
12/09/2021     12/09/2021       134

我运行此查询 4 ​​次。但第二天我会做 5 次,然后继续。我可以在 SQL 本身中创建一个矩阵吗?这样可以节省很多时间。

【问题讨论】:

  • 什么意思可以在 SQL Server 中创建矩阵?矩阵是您在表示层而不是数据库中找到的东西。
  • 顺便说一句,您的查询会出错。 RecordCreatedDate 不在 GROUP BY 中,因此无法订购。
  • 使用 SQL Server Reporting Services 并省去所有的麻烦。

标签: sql sql-server matrix sql-server-2012


【解决方案1】:

您可以按RecordCreatedDate 分组:

SELECT   RecordCreatedDate, COUNT(Uniquekey)
FROM     TableName 
GROUP BY RecordCreatedDate

【讨论】:

  • 谢谢。这将显示每天完成的条目。那天我还需要数据库中的总条目。所以我需要日期,当天完成的条目,当天数据库中的总行数。这也可能吗?
  • 嗨,我在想,我可以在数据库中添加一列(假设是 Counterdatabase),默认值为 1。现在我可以编写 SELECT COUNT(Uniquekey), sum(counterdatabase) FROM TableName GROUP BY记录创建日期。我认为这应该有效。但是你知道如何在数据库中添加一个设置值 = 1 的列吗?
【解决方案2】:

您可以每天运行一个作业,它跟踪前一天的唯一键,如下所示:

DECLARE @table table(uniquekey int unique, recordcreateddate date);

insert into @table 
values (1,'2021-09-11'),(2,'2021-09-11'),(3,'2021-09-12'),(4,'2021-09-13');

SELECT cast(dateadd(dd,-1,getdate()) as date) as Date_For_Data, cast(getdate() as date) as Date_data_checked, count(uniquekey) as [Count]   FROM @table
where RecordCreatedDate = cast(dateadd(dd,-1,getdate()) as date)
Date_For_Data Date_data_checked Count
2021-09-13 2021-09-14 1

【讨论】:

  • 您好,谢谢!这正是我想要的。我也只想要在该日期在数据库中包含总行数的另一列。使用 group by 是不可能的。我可以以某种方式使用 over(partition by) 或任何函数,以便我能够显示数据库中的总行数吗?再次感谢
  • @paru80,请作为一个单独的问题提出。对问题的更改将使该网站的未来用户感到困惑。如果它回答了您的问题,请将其标记为答案。所以,以后会对其他人有所帮助。
猜你喜欢
  • 1970-01-01
  • 2014-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多