AdventureWorks Database: Find a match between salesorderheadersalesreason and SalesReason table
SQL Query - AdventureWorks: Exercise-153 with Solution
153. From the following tables write a query in SQL to identify salesorderheadersalesreason and SalesReason tables with the same salesreasonid.
Sample table: Sales.salesorderheadersalesreasonsalesorderid|salesreasonid|modifieddate | ------------+-------------+-----------------------+ 43697| 5|2011-05-31 00:00:00.000| 43697| 9|2011-05-31 00:00:00.000| 43702| 5|2011-06-01 00:00:00.000| 43702| 9|2011-06-01 00:00:00.000| 43703| 5|2011-06-01 00:00:00.000| 43703| 9|2011-06-01 00:00:00.000| 43706| 5|2011-06-02 00:00:00.000| 43706| 9|2011-06-02 00:00:00.000| 43707| 5|2011-06-02 00:00:00.000| 43707| 9|2011-06-02 00:00:00.000| 43709| 5|2011-06-02 00:00:00.000| 43709| 9|2011-06-02 00:00:00.000| -- more --Sample table: sales.SalesReason
salesreasonid|name |reasontype|modifieddate | -------------+-------------------------+----------+-----------------------+ 1|Price |Other |2008-04-30 00:00:00.000| 2|On Promotion |Promotion |2008-04-30 00:00:00.000| 3|Magazine Advertisement |Marketing |2008-04-30 00:00:00.000| 4|Television Advertisement|Marketing |2008-04-30 00:00:00.000| 5|Manufacturer |Other |2008-04-30 00:00:00.000| 6|Review |Other |2008-04-30 00:00:00.000| 7|Demo Event |Marketing |2008-04-30 00:00:00.000| 8|Sponsorship |Marketing |2008-04-30 00:00:00.000| 9|Quality |Other |2008-04-30 00:00:00.000| 10|Other |Other |2008-04-30 00:00:00.000|
Sample Solution:
-- Selecting all columns from the salesorderheadersalesreason table where salesreasonid matches those in the SalesReason table
SELECT *
-- From the salesorderheadersalesreason table
FROM sales.salesorderheadersalesreason
-- Filtering records to include only those where salesreasonid is found in a subquery
WHERE salesreasonid
IN
-- Subquery: Selecting salesreasonid from the SalesReason table
(
SELECT salesreasonid
-- From the SalesReason table
FROM sales.SalesReason
);
Explanation:
- This SQL code retrieves all records from the salesorderheadersalesreason table where the salesreasonid matches those found in the SalesReason table.
- The SELECT statement specifies that all columns should be included in the result set.
- The FROM clause indicates the table from which data is being retrieved, which is the salesorderheadersalesreason table.
- The WHERE clause filters records to include only those where the salesreasonid exists in the subquery result.
- The subquery selects salesreasonid from the SalesReason table.
Sample Output:
salesorderid|salesreasonid|modifieddate | ------------+-------------+-----------------------+ 43697| 5|2011-05-31 00:00:00.000| 43697| 9|2011-05-31 00:00:00.000| 43702| 5|2011-06-01 00:00:00.000| 43702| 9|2011-06-01 00:00:00.000| 43703| 5|2011-06-01 00:00:00.000| 43703| 9|2011-06-01 00:00:00.000| 43706| 5|2011-06-02 00:00:00.000| 43706| 9|2011-06-02 00:00:00.000| 43707| 5|2011-06-02 00:00:00.000| 43707| 9|2011-06-02 00:00:00.000| 43709| 5|2011-06-02 00:00:00.000| 43709| 9|2011-06-02 00:00:00.000| 43710| 5|2011-06-02 00:00:00.000| 43710| 9|2011-06-02 00:00:00.000| ...
SQL AdventureWorks Editor:
Practice Online
Contribute your code and comments through Disqus.
Previous: Find the salespeople without a quota over $250,000.
Next: Find all telephone numbers that have area code 415.
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-153.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics