如何首先获取包含所有列中数据的行 [英] How to get those rows first which contains data in all column
问题描述
我有一个表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屋!