AdventureWorks Database: Select data from first column that has a nonnull value
130. From the following table write a query in SQL to select the data from the first column that has a nonnull value. Retrun Name, Class, Color, ProductNumber, and FirstNotNull.
Sample table: production.Productproductid|name |productnumber|makeflag|finishedgoodsflag|color |safetystocklevel|reorderpoint|standardcost|listprice|size|sizeunitmeasurecode|weightunitmeasurecode|weight |daystomanufacture|productline|class|style|productsubcategoryid|productmodelid|sellstartdate |sellenddate |discontinueddate|rowguid |modifieddate | ---------+--------------------------------+-------------+--------+-----------------+------------+----------------+------------+------------+---------+----+-------------------+---------------------+-------+-----------------+-----------+-----+-----+--------------------+--------------+-----------------------+-----------------------+----------------+------------------------------------+-----------------------+ 1|Adjustable Race |AR-5381 |false |false | | 1000| 750| 0| 0| | | | | 0| | | | | |2008-04-30 00:00:00.000| | |694215b7-08f7-4c0d-acb1-d734ba44c0c8|2014-02-08 10:01:36.827| 2|Bearing Ball |BA-8327 |false |false | | 1000| 750| 0| 0| | | | | 0| | | | | |2008-04-30 00:00:00.000| | |58ae3c20-4f3a-4749-a7d4-d568806cc537|2014-02-08 10:01:36.827| 3|BB Ball Bearing |BE-2349 |true |false | | 800| 600| 0| 0| | | | | 1| | | | | |2008-04-30 00:00:00.000| | |9c21aed2-5bfa-4f18-bcb8-f11638dc2e4e|2014-02-08 10:01:36.827| 4|Headset Ball Bearings |BE-2908 |false |false | | 800| 600| 0| 0| | | | | 0| | | | | |2008-04-30 00:00:00.000| | |ecfed6cb-51ff-49b5-b06c-7d8ac834db8b|2014-02-08 10:01:36.827| 316|Blade |BL-2036 |true |false | | 800| 600| 0| 0| | | | | 1| | | | | |2008-04-30 00:00:00.000| | |e73e9750-603b-4131-89f5-3dd15ed5ff80|2014-02-08 10:01:36.827| 317|LL Crankarm |CA-5965 |false |false |Black | 500| 375| 0| 0| | | | | 0| |L | | | |2008-04-30 00:00:00.000| | |3c9d10b7-a6b2-4774-9963-c19dcee72fea|2014-02-08 10:01:36.827| 318|ML Crankarm |CA-6738 |false |false |Black | 500| 375| 0| 0| | | | | 0| |M | | | |2008-04-30 00:00:00.000| | |eabb9a92-fa07-4eab-8955-f0517b4a4ca7|2014-02-08 10:01:36.827| -- more --
Sample Solution:
-- Selecting specific columns from the Product table and using COALESCE function to find the first non-null value among Class, Color, and ProductNumber
SELECT
-- Selecting the Name column
Name,
-- Selecting the Class column
Class,
-- Selecting the Color column
Color,
-- Selecting the ProductNumber column
ProductNumber,
-- Applying the COALESCE function to find the first non-null value among Class, Color, and ProductNumber
COALESCE(Class, Color, ProductNumber) AS FirstNotNull
-- Selecting data from the Product table
FROM
Production.Product;
Explanation:
- This SQL code selects specific columns from the Product table and uses the COALESCE function to find the first non-null value among Class, Color, and ProductNumber for each row.
- The COALESCE function returns the first non-null value from the list of its arguments.
- If Class is not null, it is returned.
- If Class is null but Color is not null, Color is returned.
- If both Class and Color are null but ProductNumber is not null, ProductNumber is returned.
- The result set includes columns for Name, Class, Color, ProductNumber, and the first non-null value among Class, Color, and ProductNumber, labeled as FirstNotNull.
- This SQL query can be useful for scenarios where you need to select a fallback value among multiple columns based on their nullability.
Sample Output:
name |class|color |productnumber|firstnotnull| --------------------------------+-----+------------+-------------+------------+ Adjustable Race | | |AR-5381 |AR-5381 | Bearing Ball | | |BA-8327 |BA-8327 | BB Ball Bearing | | |BE-2349 |BE-2349 | Headset Ball Bearings | | |BE-2908 |BE-2908 | Blade | | |BL-2036 |BL-2036 | LL Crankarm |L |Black |CA-5965 |L | ML Crankarm |M |Black |CA-6738 |M | HL Crankarm | |Black |CA-7457 |Black | Chainring Bolts | |Silver |CB-2903 |Silver | Chainring Nut | |Silver |CN-6137 |Silver | Chainring | |Black |CR-7833 |Black | Crown Race | | |CR-9981 |CR-9981 | Chain Stays | | |CS-2812 |CS-2812 | Decal 1 | | |DC-8732 |DC-8732 | ...
SQL AdventureWorks Editor:
Practice Online
Contribute your code and comments through Disqus.
Previous: Evaluate whether the values in two columns are the same.
Next: Check for similarity of the values.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics