위 와같은 테이블과 데이터들이 있는데요. 지금 보다싶이 같은 scode 두개씩 반복되며 쭈욱 나열되고있습니다. 결과값을 scode 두개씩이 아닌 한줄로 하려합니다. value2 가 null이 아닌 두개 중 위에 걸로 값을 표출하려 하는데 value2가 null인 value3의 데이터를 옆에 붙여서 가져오고싶습니다. 어떻게 해야할까요? |
Comment 5
-
항해자™
2014.12.19 09:31
-
솔총이
2014.12.19 09:34
그러면 null 값의 value3의 데이터는 사라지잖아요..ㅜ 널이아닌 값 옆에 붙여서 가져오고싶은데 말이에요..
-
철스
2014.12.19 10:21
DECLARE @TMPTABLE TABLE
(
SKEY VARCHAR(10) NULL,
SCODE VARCHAR(10) NULL,
TYPE1 VARCHAR(10) NULL,
VALUE2 INT NULL,
VALUE3 FLOAT NULL,
DATE VARCHAR(7) NULL
);
INSERT INTO @TMPTABLE (SKEY, SCODE, TYPE1, VALUE2, VALUE3, [DATE])
SELECT '1' AS 'SKEY', '94955512' AS 'SCODE', '1' AS 'TYPE1', 50 AS 'VALUE2', 15.95 AS 'VALUE3', '2014-12' AS 'DATE' UNION ALL
SELECT '2', '94955512', '6', NULL, 4.77, '2014-12' UNION ALL
SELECT '3', '65633333', '1', 55, 12.95, '2014-12' UNION ALL
SELECT '4', '65633333', '6', NULL, 4.50, '2014-12' UNION ALL
SELECT '5', '41212223', '1', 25, 19.95, '2014-12' UNION ALL
SELECT '6', '41212223', '6', NULL, 14.82, '2014-12' UNION ALL
SELECT '7', '12345678', '1', 30, 22.95, '2014-12' UNION ALL
SELECT '8', '12345678', '6', NULL, NULL, '2014-12'
--1번
SELECT
A.SKEY, A.SCODE, A.TYPE1, A.VALUE2, A.VALUE3, ISNULL(B.VALUE3, 0) AS VALUE3_2, A.[DATE]
FROM @TMPTABLE AS A
LEFT JOIN @TMPTABLE B ON A.SCODE = B.SCODE AND A.[DATE] = B.[DATE] AND B.VALUE2 IS NULL
WHERE A.VALUE2 IS NOT NULL--2번
SELECT
A.SKEY, A.SCODE, A.TYPE1, A.VALUE2, A.VALUE3
, ISNULL((SELECT VALUE3 FROM @TMPTABLE WHERE A.SCODE = SCODE AND A.[DATE] = [DATE] AND VALUE2 IS NULL), 0) AS VALUE3_2
, A.[DATE]
FROM @TMPTABLE AS A
WHERE A.VALUE2 IS NOT NULL -
jyo2
2014.12.19 10:39
WITH AA AS (
SELECT '94955512' SCODE,'1' TYPE1,'50' VALUE2,'15.95' VALUE3,'2014-12' DATE
UNION ALL
SELECT '94955512','6',NULL,'4.77','2014-12'
UNION ALL
SELECT '65633333','1','55','12.95','2014-12'
UNION ALL
SELECT '65633333','6',NULL,'4.50','2014-12'
UNION ALL
SELECT '41212223','1','25','19.95','2014-12'
UNION ALL
SELECT '41212223','6',NULL,'14.82','2014-12'
UNION ALL
SELECT N'밑으로쭈욱',N'계속',N'값이',N'있다고',N'가정'
)
SELECT SCODE
, TYPE1
, VALUE2
, VALUE3
, DATE
, (SELECT VALUE3 FROM AA BB WHERE BB.VALUE2 IS NULL AND BB.SCODE= AA.SCODE) "VALUE2가 NULL인 VALUE3의 데이터를 옆에 붙인것"
FROM AA
WHERE VALUE2 IS NOT NULL -
솔총이
2014.12.19 14:03
철스, jyo2 님 두분 다 정말 감사합니다.
하나는 반드시 널이라면 where value2 is not null 만 넣으셔도 되겠네요,,,