我已经改变了我的问题,以展示我所追求的更好的例子。
说我有一张名为:
的表TableA
表中存在以下列:
Column1, Column2, Column3
我想要完成的是查看有多少记录不为空。
要做到这一点我有以下案例陈述:
sum(Case when Column1 is not null then 1 else 0 end)
我想要的是上面提供的每个表的上述case语句,并为表中存在的每个列运行。
因此,对于上面的示例,case1将运行Column1,Column2和Column3,因为该特定表中有3列等
但我想指定一个表列表来循环执行上面的逻辑
答案 0 :(得分:1)
{{1}}
答案 1 :(得分:0)
这不容易吗?
SELECT AccountID
,SUM(Total) AS SumTotal
,SUM(Profit) AS SumProfit
,SUM(Loss) AS SumLoss
FROM tblAccount
GROUP BY AccountID
如果我理解正确,您希望获得总和,但不是一次性所有行,而是单独的每个帐户ID 。这是GROUP BY
的用途......
尽可能尝试避免循环,游标和其他程序方法......
对于不同的表,您可能 - 可能 - 完全需要我上面显示的语句,但您必须动态生成它并使用EXEC
来执行它。您可以通过INFORMATION_SCHEMA.COLUMNS
获取列名...
可是:
data_type like 'decimal%'
或类似的...... GROUP BY
中的用法怎么样?说实话:我认为,没有真正通用的一对一方法......