c# - 获取sql中连接列的计数

标签 c# sql .net sql-server model-view-controller

我连接了多个列,我想计算连接了多少列

查询输出和预期输出是

用于连接

select  ConcateColumn = STUFF(
                              COALESCE('* ' + RTRIM(col1),'') 
                             +COALESCE('* ' + RTRIM(col2),'') 
                             +COALESCE('* ' + RTRIM(col4),'') 
                             +COALESCE('* ' + RTRIM(col3),'') 
                       , 1, 2, '') 

表格

===================================
| col1   | col2  |  col3  |  col4 | 
===================================
|  1     | 2     |  NULL  | NULL  |
|  NULL  | NULL  |  NULL  | NULL  |
|  1     | NULL  |  NULL  | NULL  |
|  NULL  | 2     |  3     | 4     |
|        | NULL  |  NULL  | NULL  |       
==================================

结果输出

 ==============
|ConcateColumn|
 ==============
|1*2          |
|NULL         |
|1            |
|2*3*4        |
|             |
===============

预期输出

------------------------
| Count | ConcateColumn |
-------------------------
|   2   |     1*2       |
|   0   |     NULL      |
|   1   |     1         |
|   3   |     2*3*4     |
|   0   |               |
-------------------------

如果我得到的数量绰绰有余

最佳答案

你可以试试这个。

select  (SELECT count(NULLIF(val,''))
        FROM   (VALUES(col1),(col2),(col3), (col4)) v (val)) 'COUNT',
          ConcateColumn = STUFF(
                              COALESCE('* ' + NULLIF(RTRIM(col1),''),'') 
                             +COALESCE('* ' + NULLIF(RTRIM(col2),''),'') 
                             +COALESCE('* ' + NULLIF(RTRIM(col3),''),'') 
                             +COALESCE('* ' + NULLIF(RTRIM(col4),''),'') 
                       , 1, 2, '')
FROM T

如果你想在没有NULL''的情况下进行计数,你可以尝试使用NULLIF函数。

sqlfiddle

关于c# - 获取sql中连接列的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53248008/

相关文章:

mysql - laravel 条件数据库查询

sql - t-sql BETWEEN 子句

c# - MySql 获取行数

java - 为什么这个 SpriteBatch 在 C# 中工作而不在 Java 中工作?

python - 如何在 Django 的查询集中执行两个内部联接

c# - 增强小字体可读性的文本效果

c# - Linq 选择某些属性到另一个对象?

c# - 在 Visual Studio 2013 中将自定义项添加到智能感知

c# - 按 Contains(variable) 过滤时 LINQ Where 的意外输出

c# - IEqualityComparer 和 Linq Distinct - 硬代码 GetHashCode()