如何首先获取包含所有列中数据的行 [英] How to get those rows first which contains data in all column

查看:73
本文介绍了如何首先获取包含所有列中数据的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个表EmpSettrings,其中列名如C1,C2,C3,C4,C5,C6,C7,C8 ......

所有列都可能包含数据(均值) optinal)。

我想以递减的顺序获取行,其中包含所有列中的数据..



empId C1 C2 C3 C4 C5 C6 C7 C8

1 12 23 0 B 6 8 0 1

2 15 18 NULL C NULL 1 1 NULL

3 17 12 NULL NULL 1 NULL 1 NULL

4 16 17 NULL NULL 1 NULL NULL NULL

5 12 78 NULL NULL NULL NULL NULL NULL

6 13 NULL NULL NULL NULL NULL NULL NULL



我尝试过:



WITH CTE AS(

SELECT *,

(当C1为空时为1节0结束时的情况)

+情况当C2为空时为1 ELSE 0结束)

+ CASE当C3为空时那么1 0结束)

...

...

+ CASE WH EN C8 IS NULL那么1 ELSE 0 END))AS sum_of_nulls

来自EmpSettrings



SELECT * FROM CTE ORDER by sum_of_nulls

I have a table "EmpSettrings" where Column name like C1,C2, C3,C4,C5, C6,C7,C8 ...
All column may be contains data or not (means optinal).
I want to fetch rows in deceasing order which contains data in all column ..

empId C1 C2 C3 C4 C5 C6 C7 C8
1 12 23 0 B 6 8 0 1
2 15 18 NULL C NULL 1 1 NULL
3 17 12 NULL NULL 1 NULL 1 NULL
4 16 17 NULL NULL 1 NULL NULL NULL
5 12 78 NULL NULL NULL NULL NULL NULL
6 13 NULL NULL NULL NULL NULL NULL NULL

What I have tried:

WITH CTE AS(
SELECT * ,
(CASE WHEN C1 IS NULL THEN 1 ELSE 0 END )
+ CASE WHEN C2 IS NULL THEN 1 ELSE 0 END)
+ CASE WHEN C3 IS NULL THEN 1 ELSE 0 END)
...
...
+ CASE WHEN C8 IS NULL THEN 1 ELSE 0 END)) AS sum_of_nulls
FROM EmpSettrings
)
SELECT * FROM CTE ORDER BY sum_of_nulls

推荐答案

所有列上的ORDER BY ...

ORDER BY子句(Transact-SQL)| Microsoft Docs [ ^ ]
ORDER BY on all the columns...
ORDER BY Clause (Transact-SQL) | Microsoft Docs[^]


这篇关于如何首先获取包含所有列中数据的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆