小编Fre*_*Man的帖子

仅选择 sum(column) > 0 的列

我有一张这样的表:

Date     Bob     Joe     Will
1/1/15    1       0        1
1/2/15    0       0        1
1/3/15    0       0        0
1/4/15    1       1        1
Run Code Online (Sandbox Code Playgroud)

首选方案

有了一个说法,我想回到列其中SUM(Column) > 0

例如:

SELECT SUM(Bob) as Robert, SUM(Joe) as Joseph, SUM(Will) as William
  FROM table
 WHERE Date BETWEEN '1/1/15' and '1/3/15'
Run Code Online (Sandbox Code Playgroud)

我希望我的结果看起来像这样:

Robert     William
  1           2
Run Code Online (Sandbox Code Playgroud)

换句话说,因为SUM(Joe) = 0对于我选择的日期范围,我不希望该列出Joseph现在结果集中。会导致Joseph不出现的魔法是什么?

替代解决方案

如果返回的数据略有不同,我可以处理它,所以我考虑编写一个表函数来返回一个 2 列表,如下所示:

Name        Value
Robert      1
William     2
Run Code Online (Sandbox Code Playgroud)

我的想法是函数代码看起来类似于:

--Declare table here
IF SELECT SUM(Bob) > 0 …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2014

3
推荐指数
1
解决办法
6019
查看次数

SQL Server 存储过程是否默认备份?

我们有两台运行 SQL Server 2019 (15.0.x) 的服务器。

当我们进行完整数据库备份(通过右键单击数据库,然后单击“任务”,然后单击“备份”)时,是否包括备份所有项目,然后Programmability将其还原到其他服务器?

sql-server backup stored-procedures restore

2
推荐指数
1
解决办法
112
查看次数