[SQL] 이동 세포는 왼쪽이 null이 포함 된 경우 SQL에서 왼쪽과 오른쪽 값을 포함
SQL이동 세포는 왼쪽이 null이 포함 된 경우 SQL에서 왼쪽과 오른쪽 값을 포함
SQL에서 나는 형식 다음과 같은 결과를 얻고있다. 완전히 내가 6 열 수 있습니다. 1 행 6 열의 값과 2 행 5를 포함 & 6은 값이 포함되어 있습니다. 하지만 난 이전 칼럼 내가 1 열에서 그 필요 값 수단을 포함하지 않는 경우 모든 세포를 확인해야합니다.
실제 결과
a b c d e f
1
1 2
1 2 3
예상 결과:-
a b c d e f
1
1 2
1 2 3
좋은 말 (I는 SQL 서버 2008 R2를 사용하고 있습니다) 몇 가지 좋은 답변을 게시
해결법
-
==============================
1.Astander의 (그러나 OUTER를 사용하는 대신 PIVOT / UNPIVOT의 적용) @ 유사 또 다른 방법 :
Astander의 (그러나 OUTER를 사용하는 대신 PIVOT / UNPIVOT의 적용) @ 유사 또 다른 방법 :
SELECT a = MIN(CASE WHEN y.rn = 1 THEN y.val END), b = MIN(CASE WHEN y.rn = 2 THEN y.val END), c = MIN(CASE WHEN y.rn = 3 THEN y.val END), d = MIN(CASE WHEN y.rn = 4 THEN y.val END), e = MIN(CASE WHEN y.rn = 5 THEN y.val END), f = MIN(CASE WHEN y.rn = 6 THEN y.val END) FROM t OUTER APPLY ( SELECT x.val, rn = ROW_NUMBER() OVER (ORDER BY rn) FROM ( VALUES (a,1), (b,2), (c,3), (d,4), (e,5), (f,6) ) x (val, rn) WHERE x.val IS NOT NULL ) y GROUP BY t.tid ;
SQL-바이올린의 테스트
-
==============================
2.어떻게 같은 약
어떻게 같은 약
DECLARE @Table TABLE( a INT, b INT, c INT, d INT, e INT, f INT ) INSERT INTO @Table VALUES (null,null,null,null,null,10), (null,null,null,null,10,20), (null,null,null,10,20,30) SELECT * FROM @Table SELECT SUM([1]) a, SUM([2]) b, SUM([3]) c, SUM([4]) d, SUM([5]) e, SUM([6]) f FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY (SELECT NULL)) ValID FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) ID FROM @Table ) p UNPIVOT ( val FOR col IN (a,b,c,d,e,f) ) up ) v PIVOT ( SUM(val) FOR ValID IN ([1],[2],[3],[4],[5],[6]) ) p GROUP BY ID
from https://stackoverflow.com/questions/20781309/move-cells-left-in-sql-if-left-contains-null-and-right-contains-value by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 CodeIgniter의의 활동 기록에이 SQL을 다시 작성할 수 있습니까? (0) | 2020.06.18 |
---|---|
[SQL] 날짜 비교 비정상적인 결과를 반환 - SQL 오라클 (0) | 2020.06.18 |
[SQL] SQL의 평균을 반올림 때 어떻게 소수를 검색 할 (0) | 2020.06.17 |
[SQL] 특정 테이블을 참조하는 모든 저장 프로 시저를 식별하는 방법 (0) | 2020.06.17 |
[SQL] 여러 행으로 분할 문자열 (0) | 2020.06.17 |