【问题标题】:T-SQL: Rows to Columns With CountT-SQL:行到列的计数
【发布时间】:2015-08-02 22:07:09
【问题描述】:

我先画个表吧(Code下实际有几十列,几十个值)

Code | Pat   | Col1 | Col2 | Col3
---------------------------------
ABC  | 001   |      | XX   | Q1
ABC  | 002   | xx   | xx   | Q1
ABC  | 003   | xx   | xxx  | Q1
DEF  | 004   | xx   | xx   | Q1
DEF  | 005   | xx   | xx   | Q1
DEF  | 006   | xx   | xxx  | Q1

生成的表格需要看起来像

ABC | DEF
---------
2   | 3
3   | 3

让我试着解释一下。对于每个“Code”列,我需要计算Col1ColX 中单元格不为空/空的条目数。

所以在上面的示例中,代码ABCCol1 中的计数为 2,在Col2 中的计数为 3,对于 DEF 类似,两者的计数均为 3

我已经尝试了很多东西,但到了现在我又在看一个空白页的地步!

交替

Code | Col1 | Col2
--------------------
ABC  | 2    | 3   
DEF  | 3    | 3

请指教

【问题讨论】:

标签: tsql sql-server-2008-r2


【解决方案1】:

可以通过使用GROUP BY 并总结计算出的数字来获得替代解决方案:

SELECT 
    [Code], 
    SUM(CASE WHEN ISNULL(Col1, '') = '' THEN  0 ELSE 1 END) as [Col1], 
    SUM(CASE WHEN ISNULL(Col2, '') = '' THEN  0 ELSE 1 END) as [Col2], 
    ...
FROM T 
GROUP by [Code]

【讨论】:

  • 抱歉,忘记标记我们使用的是 2008 R2,所以这不起作用
  • IIF移动到CASE
猜你喜欢
  • 2023-03-31
  • 2023-02-08
  • 2023-03-26
  • 1970-01-01
  • 2021-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-23
相关资源
最近更新 更多