表中每列的SQL循环

时间:2016-11-13 17:59:31

标签: sql sql-server-2008

我已经改变了我的问题,以展示我所追求的更好的例子。

说我有一张名为:

的表
TableA

表中存在以下列:

Column1, Column2, Column3 

我想要完成的是查看有多少记录不为空。

要做到这一点我有以下案例陈述:

sum(Case when Column1 is not null then 1 else 0 end)

我想要的是上面提供的每个表的上述case语句,并为表中存在的每个列运行。

因此,对于上面的示例,case1将运行Column1,Column2和Column3,因为该特定表中有3列等

但我想指定一个表列表来循环执行上面的逻辑

2 个答案:

答案 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中的用法怎么样?
  • 您想如何放置别名
  • 您希望如何继续使用未知结构的表格?

说实话:我认为,没有真正通用的一对一方法......