SQL Server 2008 R2: Get first not null values from column
In sqlserver, when you have multiple data with some column have null value and you need the row which not null.
So this example will help you.
So this example will help you.
CREATE TABLE Family
(
    ID int,
    Name varchar(20),
    Gender char(1)
);
INSERT INTO Family VALUES
(1,'Ram','M'),
(2,'Suraj','M'),
(3,'Sunitha','F'),
(4,'Deepika','F'),
(5,'Minakshi','F'),
(6,'Somu','M');
CREATE TABLE Child_parent
(
    Child_ID int,
    Parent_ID int
);
INSERT INTO Child_parent VALUES
(1,2),
(1,3),
(4,5),
(4,6);
 
Expected Result:Child_ID    ChildName   FatherName  MotherName
-----------------------------------------------
 1                  Ram               Suraj            Sunitha 4        Deepika       Somu              MinakshiQuery to get Desire result with self join as below.
SELECT  cp.Child_ID,
        f1.Name as ChildName,
        max(CASE WHEN f2.Gender = 'M' THEN f2.Name END) FatherName,
        max(CASE WHEN f2.Gender = 'F' THEN f2.Name END) MotherName
FROM Child_parent cp
LEFT JOIN Family f1
ON cp.Child_ID = f1.ID
LEFT JOIN Family f2
ON cp.Parent_ID = f2.ID
group by cp.Child_ID,
        f1.Name 
 order by cp.Child_ID
 Referece link - https://stackoverflow.com/questions/47627228/sql-server-2008-r2-get-first-not-null-values-from-column?answertab=votes#tab-top
Comments
Post a Comment