add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
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