我连接了多个列,我想计算连接了多少列
查询输出和预期输出是
用于连接
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
函数。
关于c# - 获取sql中连接列的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53248008/