AdventureWorks Database: Find the data from the first column that has a non-null value
187. From the following table write a query in SQL to find the data from the first column that has a non-null value. Return name, color, productnumber, and firstnotnull column.
Sample table: Production.Product
productid|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 columns Name, Color, and ProductNumber from the production.Product table
SELECT Name, Color, ProductNumber, COALESCE(Color, ProductNumber) AS FirstNotNull
-- From the production.Product table
FROM production.Product ;
Explanation:
- This SQL query retrieves data from the Product table in the Production schema.
- Comments are added to explain each part of the query for better understanding and maintenance.
- Here's a breakdown of what the query does:
- It selects the Name, Color, and ProductNumber columns from the Product table.
- The COALESCE function is used to return the first non-null value among the Color and ProductNumber columns.
- If the Color column is not null, it will be returned; otherwise, the ProductNumber column will be returned.
- The alias "FirstNotNull" is assigned to the result of the COALESCE function.
Sample Output:
name |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 |Black |CA-5965 |Black | ML Crankarm |Black |CA-6738 |Black | HL Crankarm |Black |CA-7457 |Black | Chainring Bolts |Silver |CB-2903 |Silver | Chainring Nut |Silver |CN-6137 |Silver | Chainring |Black |CR-7833 |Black | ...
SQL AdventureWorks Editor:
Practice Online
Contribute your code and comments through Disqus.
Previous: Find all products that have NULL in the weight column
Next: Return rows only when two values in the two tables match.
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