AdventureWorks Database: Select data from first column that has a nonnull value
SQL Query - AdventureWorks: Exercise-130 with Solution
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.
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://www.w3resource.com/sql-exercises/adventureworks/sql-adventureworks-exercise-130.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics