By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE T(
RatingID int,
GroupID int,
Value1 int,
Value2 int,
Value3 int,
Value4 int
);
INSERT INTO T VALUES (1,2222,13,19,null,null);
INSERT INTO T VALUES (2,2222,13,null,null,null);
INSERT INTO T VALUES (3,2223,1,null,null,null);
INSERT INTO T VALUES (4,2223,1,null,null,null);
INSERT INTO T VALUES (5,2224,5,null,null,null);
INSERT INTO T VALUES (6,2225,10,12,13,null);
INSERT INTO T VALUES (7,2225,12,13,10,null);
7 rows affected
SELECT t1.RatingID,
t1.GroupID,
v.value
FROM T t1 CROSS APPLY (
VALUES
(Value1),
(Value2),
(Value3),
(Value4)
) v (value)
WHERE v.value IS NOT NULL
RatingID | GroupID | value |
---|---|---|
1 | 2222 | 13 |
1 | 2222 | 19 |
2 | 2222 | 13 |
3 | 2223 | 1 |
4 | 2223 | 1 |
5 | 2224 | 5 |
6 | 2225 | 10 |
6 | 2225 | 12 |
6 | 2225 | 13 |
7 | 2225 | 12 |
7 | 2225 | 13 |
7 | 2225 | 10 |
SELECT t1.*
FROM (
SELECT RatingID,GroupID,Value1 value
FROM T
UNION ALL
SELECT RatingID,GroupID,Value2
FROM T
UNION ALL
SELECT RatingID,GroupID,Value3
FROM T
UNION ALL
SELECT RatingID,GroupID,Value4
FROM T
) t1
WHERE value IS NOT NULL
RatingID | GroupID | value |
---|---|---|
1 | 2222 | 13 |
2 | 2222 | 13 |
3 | 2223 | 1 |
4 | 2223 | 1 |
5 | 2224 | 5 |
6 | 2225 | 10 |
7 | 2225 | 12 |
1 | 2222 | 19 |
6 | 2225 | 12 |
7 | 2225 | 13 |
6 | 2225 | 13 |
7 | 2225 | 10 |