0% found this document useful (0 votes)
19 views263 pages

ExamTopic (With Discussion 1)

The document contains a single topic - 'Expert Verified, Online, Free.'

Uploaded by

csmatthews0311
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views263 pages

ExamTopic (With Discussion 1)

The document contains a single topic - 'Expert Verified, Online, Free.'

Uploaded by

csmatthews0311
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 263

- Expert Verified, Online, Free.

 Custom View Settings

Topic 1 - Single Topic

Question #1 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You create a table named Products by running the following Transact-SQL statement:

You have the following stored procedure:

You need to modify the stored procedure to meet the following new requirements:
✑ Insert product records as a single unit of work.
✑ Return error number 51000 when a product fails to insert into the database.
✑ If a product record insert operation fails, the product information must not be permanently written to the database.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No
Correct Answer: B
With X_ABORT ON the INSERT INTO statement and the transaction will be rolled back when an error is raised, it would then not be possible to
ROLLBACK it again in the IF XACT_STATE() <> O ROLLBACK TRANSACTION statement.
Note: A transaction is correctly defined for the INSERT INTO ..VALUES statement, and if there is an error in the transaction it will be caughtant
he transaction will be rolled back, finally an error 51000 will be raised.
Note: When SET XACT_ABORT is ON, if a Transact-SQL statement raises a run-time error, the entire transaction is terminated and rolled back.
XACT_STATE is a scalar function thatreports the user transaction state of a current running request. XACT_STATE indicates whether the request
has an active user transaction, and whether the transaction is capable of being committed.
The states of XACT_STATE are:
✑ 0 There is no active user transaction for the current request.
✑ 1 The current request has an active user transaction. The request can perform any actions, including writing data and committing the
transaction.
✑ 2 The current request has an active user transaction, but an error hasoccurred that has caused the transaction to be classified as an
uncommittable transaction.
References:
https://msdn.microsoft.com/en-us/library/ms188792.aspx
https://msdn.microsoft.com/en-us/library/ms189797.aspx

  avramov 4 months, 1 week ago


if means if.
it will not fail. i think the requirements are met anf this if is not a
problem
upvoted 1 times

  Robintang0924 2 months ago


answer
is B but explanation is incorrect. It's actually testing knowledge of how
xact_abort flag would work with try...catch block together here:
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/try-catch-transact-sql?view=sql-server-ver15
upvoted 1 times

  Robintang0924 2 months ago


after
2nd thought, correct answer should be A, this xact_abort works in try...catch
block totally meet 3 requirements mentioned in question.
upvoted 1 times

  ivanbtod 2 months ago


Yes, A is correct, Do you know if those dumps are valid,
have you attended the exam yet?
upvoted 1 times

  hgi 1 month, 3 weeks ago


Correct answer
is B as there is no statement terminator ; before THROW, so it will be seen as
an alias of the transaction.
upvoted 4 times

  indu07 1 month, 2 weeks ago


B is the right
answer because semicolon /terminator is not present after transaction
statement
upvoted 1 times

  Lindley 1 month ago


The correct answer is A according to the another dump
that I am using on Udemy. I've been working through these dumps on
examtopics.com and am seeing a lot of errors in their answers. See explanation
from dump on Udemy below: When SET XACT_ABORT is ON, if a Transact-SQL statement
raises a run-time error, the entire transaction is terminated and rolled back.
When SET XACT_ABORT is OFF, in some cases only the Transact-SQL statement that
raised the error is rolled back and the transaction continues processing.
Depending upon the severity of the error, the entire transaction may be rolled
back even when SET XACT_ABORT is OFF. OFF is the default setting. If any error
is raised, control will flow to the catch block, after rolling back the
transaction an Error will be thrown with the error number 51000 and an Error
message stating that the product was not inserted.
upvoted 2 times
  Dibassi 1 month ago
B is the right answer because with X_ABORT ON the
INSERT INTO statement, the transaction will be rolled back when an error is
raised. It would then not be possible to ROLLBACK it again in the IF
XACT_STATE() <> O ROLLBACK TRANSACTION statement.
upvoted 1 times

  flashed 4 weeks, 1 day ago


Seems to be A. CREATE TABLE [dbo].[DISTRICTS](
[ID_District] [int] IDENTITY(1,1) NOT NULL, [DistrictName] [varchar](255) NOT
NULL, [City] [varchar](2) NULL ) ON [PRIMARY] GO BEGIN SET XACT_ABORT ON BEGIN
TRY BEGIN TRANSACTION INSERT INTO DISTRICTS (DISTRICTNAME,CITY) VALUES
('LIS', 'TRETRT') COMMIT TRANSACTION; END TRY BEGIN CATCH IF XACT_STATE()
<> 0 ROLLBACK TRANSACTION; THROW 51000, 'MANUAL MSG ERROR XPTO',1 END
CATCH END ; output: (0 rows affected) Msg 51000, Level 16, State 1, Line 19
MANUAL MSG ERROR XPTO
upvoted 1 times

  tcroots19 1 week, 5 days ago


So, think this is B for another reason: INSERT INTO
Products(... ) has ProductPrice, but the tables defines UnitPrice ...so that
should get Invalid Column name, right?
upvoted 2 times

Question #2 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You create a table named Products by running the following Transact-SQL statement:

You have the following stored procedure:

You need to modify the stored procedure to meet the following new requirements:
✑ Insert product records as a single unit of work.
✑ Return error number 51000 when a product fails to insert into the database.
✑ If a product record insert operation fails, the product information must not be permanently written to the database.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?


A. Yes

B. No

Correct Answer: B
A transaction is correctly defined for the INSERT INTO .VALUES statement, and if there is an error in the transaction it will be caught ant he
transaction will be rolled back. However, error number 51000 will not be returned, as it is only used in an IF @ERROR = 51000 statement.
Note: @@TRANCOUNT returns the number of BEGIN TRANSACTION statements that have occurred on the current connection.
References:
https://msdn.microsoft.com/en-us/library/ms187967.aspx

  Robintang0924 2 months ago


It
doesn't meet the requirement as explanation of answer, below 2 links could be
used to reference:
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/try-catch-transact-sql?view=sql-server-ver15#uncommittable-transactions-and-
xact_state
https://docs.microsoft.com/en-us/sql/t-sql/functions/trancount-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15
https://docs.microsoft.com/en-us/sql/t-sql/functions/error-transact-sql?view=sql-server-ver15
upvoted 1 times

  Robintang0924 2 months ago


btw:
@@error only makes sense when you capture/save it to variable IMMEDIATELY after
statement that might raise error. it will be reset even in IF statement, so in
this case ERROR_NUMBER function is the best choice if you really want to check
some error in catch block.
https://docs.microsoft.com/en-us/sql/t-sql/functions/error-transact-sql?view=sql-server-ver15
upvoted 2 times

Question #3 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You create a table named Products by running the following Transact-SQL statement:

You have the following stored procedure:

You need to modify the stored procedure to meet the following new requirements:
✑ Insert product records as a single unit of work.
✑ Return error number 51000 when a product fails to insert into the database.
If a product record insert operation fails, the product information must not be permanently written to the database.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: A
If the INSERT INTO statement raises an error, the statement will be caught and an error 51000 will be thrown. In this case no records will have
been inserted.
Note:
You can implement error handling for the INSERT statement by specifying the statement in a TRY"¦CATCH construct.
If an INSERT statement violates a constraint or rule, or if it has a value incompatible with the data type of the column, the statement fails and an
error message is returned.
References:
https://msdn.microsoft.com/en-us/library/ms174335.aspx

  MsMartaa 1 month, 3 weeks ago


I think that
right answer is B, because solution doesn't follow requirement of inserting as a
single unit of work (begin/commit transaction)
upvoted 2 times

  AnsB 1 month, 2 weeks ago


the answer is
B because it will not rollback
upvoted 2 times

  flashed 4 weeks, 1 day ago


it's not it, it will rollback. It's because MsMartaa and
anonimdom said, single insert statement.
upvoted 1 times

  anonimdom 1 month ago


A single insert statement acts as a transaction. There
would be B if there were 2 or more inserts.
upvoted 1 times

  tcroots19 1 week, 5 days ago


so, then the answer is A * single unit of work...b/c
single INSERT statement (regardless of how many rows passed in) * error message
kicks out * bad data not written (even though Rollback isn't done)
upvoted 1 times

  Barbedx 1 day, 22 hours ago


So looks like
answer is a, but how about incorrect columns names in query(UnitPrices, im
mean)? maybe it just mistake, but how about REAL exam question with this
case?
upvoted 1 times

Question #4 Topic 1
Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You create a table named Customer by running the following Transact-SQL statement:

You must insert the following data into the Customer table:

You need to ensure that both records are inserted or neither record is inserted.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B
As there are two separate INSERT INTO statements we cannot ensure that both or neither records are inserted.

Question #5 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You create a table named Customer by running the following Transact-SQL statement:

You must insert the following data into the Customer table:

You need to ensure that both records are inserted or neither record is inserted.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B
As there are two separate INSERT INTO statements we cannot ensure that both or neither records are inserted.

Question #6 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You create a table named Customer by running the following Transact-SQL statement:

You must insert the following data into the Customer table:

You need to ensure that both records are inserted or neither record is inserted.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: A
With the INSERT INTO..VALUES statement we can insert both values with just one statement. This ensures that both records or neither is
inserted.
References:
https://msdn.microsoft.com/en-us/library/ms174335.aspx

  MsMartaa 1 month, 3 weeks ago


In above
solution are not inserting all needed data, so right answer is B
upvoted 2 times

  Lukis92 1 month ago


"both records are inserted or neither record is
inserted" - solution meets expectations.
upvoted 4 times

  RobKozak 5 days, 5 hours ago


TownID allows
for nulls and create date will default to the current date if no record is
inserted into those columns. They do not need to be specified in the insert
statement.
upvoted 1 times

  Ikhlaq 4 weeks ago


Solution meets needs, Ansewer is A. Yes
upvoted 1 times

Question #7 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database that tracks orders and deliveries for customers in North America. The database contains the following tables:

Sales.Customers -

Application.Cities -

Sales.CustomerCategories -

The company's development team is designing a customer directory application. The application must list customers by the area code of their
phone number. The area code is defined as the first three characters of the phone number.
The main page of the application will be based on an indexed view that contains the area and phone number for all customers.
You need to return the area code from the PhoneNumber field.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B
The function should return nvarchar(10) and not a TABLE.
References:
https://sqlstudies.com/2014/08/06/schemabinding-what-why/

  avramov 4 months, 1 week ago


even if the
function is defined to return nvarchar, the select top 1 col1, col2 still
returns 2 columns and 1 row
upvoted 2 times

  Robintang0924 2 months ago


agreed
with Avramov, 2 parts need to be fixed, first function return type should be
varchar, second that sql should return only value column.
upvoted 1 times

  indu07 1 month ago


'does not allow new values' what does it means and how
can we accomplish it
upvoted 1 times

  Barbedx 1 day, 21 hours ago


I think answer
s A because there are no requirements for only one value.
upvoted 1 times

Question #8 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database that tracks orders and deliveries for customers in North America. The database contains the following tables:

Sales.Customers -
Application.Cities -

Sales.CustomerCategories -

The company's development team is designing a customer directory application. The application must list customers by the area code of their
phone number. The area code is defined as the first three characters of the phone number.
The main page of the application will be based on an indexed view that contains the area and phone number for all customers.
You need to return the area code from the PhoneNumber field.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B
As the result of the function will be used in an indexed view we should use schemabinding.
References:
https://sqlstudies.com/2014/08/06/schemabinding-what-why/

  indu07 1 month ago


no where in the query table name is specified , how will
the query know which table it has to use .
upvoted 1 times

  flashed 4 weeks, 1 day ago


try to pay more attention. Don't need any table in this
case.
upvoted 1 times

  tcroots19 1 week, 4 days ago


What does schemabinding actually do here? Since there is
no table referenced, how does this function actually get involved in the Index?
Seems like that would be on the actual query that pulls all Phones
upvoted 1 times

Question #9 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database that tracks orders and deliveries for customers in North America. The database contains the following tables:

Sales.Customers -

Application.Cities -

Sales.CustomerCategories -

The company's development team is designing a customer directory application. The application must list customers by the area code of their
phone number. The area code is defined as the first three characters of the phone number.
The main page of the application will be based on an indexed view that contains the area and phone number for all customers.
You need to return the area code from the PhoneNumber field.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B
We need SELECT TOP 1 @areacode =.. to ensure that only one value is returned.
Question #10 Topic 1

Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question in this series.
You query a database that includes two tables: Project and Task. The Project table includes the following columns:

The Task table includes the following columns:

You plan to run the following query to update tasks that are not yet started:
UPDATE Task SET StartTime = GETDATE() WHERE StartTime IS NULL
You need to return the total count of tasks that are impacted by this UPDATE operation, but are not associated with a project.
What set of Transact-SQL statements should you run?

A.

B.

C.

D.

Correct Answer: B
The WHERE clause of the third line should be WHERE ProjectID IS NULL, as we want to count the tasks that are not associated with a project.

Question #11 Topic 1

HOTSPOT -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question in this series.
You query a database that includes two tables: Project and Task. The Project table includes the following columns:
You need to identify the owner of each task by using the following rules:
✑ Return each task's owner if the task has an owner.
✑ If a task has no owner, but is associated with a project that has an owner, return the project's owner.
✑ Return the value-1for all other cases.
How should you complete the Transact-SQL statement? To answer, select the appropriate Transact-SQL segments in the answer area.
Hot Area:

Correct Answer:

Box 1: COALESCE -
COALESCE evaluates the arguments in order and returns the current value of the first expression that initially does not evaluate to NULL.

Box 2: T.UserID, p.UserID, -1 -


✑ Return each task's owner if the task has an owner.
✑ If a task has no owner, but is associated with a project that has an owner, return the project's owner.
✑ Return the value -1 for all other cases.

Box 3: RIGHT JOIN -


The RIGHT JOIN keyword returns all rows from the right table (table2), with the matching rows in the left table (table1). The result is NULL in the
left side when there is no match. Here the right side could be NULL as the projectID of the task could be NULL.
References:
https://msdn.microsoft.com/en-us/library/ms190349.aspx
http://www.w3schools.com/Sql/sql_join_right.asp

  Tazul 6 months, 3 weeks ago


Correct: Left
Join
upvoted 14 times

  M4x 6 months, 1 week ago


Its
a LEFT JOIN
upvoted 5 times

  Tr4ckz 6 months ago


RIGHT
JOIN is correct, as given in the answer. The task table (left) is containing the
potentially empty values and is joined onto the right project table.
upvoted 1 times

  prakash101179 5 months, 2 weeks ago


Should be left join. Question is about tasks.
upvoted 5 times

  mlourinho 4 months ago


The columns selected are concerning Tasks. Therefore we
should use LEFT JOIN. Otherwise the result will Induce error.
upvoted 5 times

  Robintang0924 2 months ago


agreed,
left join it is since select result only concerned about task. If we go with
right join then for a task that has no project, we will get an all null value
row result which doesn't make any sense in any context and
requirement.
upvoted 4 times

Question #12 Topic 1

DRAG DROP -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question in this series.
You query a database that includes two tables: Project and Task. The Project table includes the following columns:

Task level is defined using the following rules:

You need to determine the task level for each task in the hierarchy.
Which five Transact-SQL segments should you use to develop the solution? To answer, move the appropriate Transact-SQL segments from the list
of Transact-
SQL segments to the answer area and arrange them in the correct order.
Select and Place:

Correct Answer:

Box 1: SELECT CAST (NULL AS INT) AS ParentTaskID, etc.


This statement selects all tasks with task level 0.
The ParentTaskID could be null so we should use CAST (NULL AS INT) AS ParentTaskID.

Box 2: UNION -
We should use UNION and not UNION ALL as we do not went duplicate rows.
UNION specifies that multiple result sets are to be combined and returned as a single result set.
Incorrect Answers:
Not UNION ALL: ALL incorporates all rows into the results. This includes duplicates. If not specified, duplicate rows are removed.
Box 3, Box 4, Box 5:
These statements select all tasks with task level >0.
References:
https://msdn.microsoft.com/en-us/library/ms180026.aspx

  Tazul 6 months, 3 weeks ago


Correct
Answer: With TaskWithTaskLevel (ParentTaskID,TaskID,TaskName,TaskLevel) As (
Select Cast(null as int) ParentTaskID, T.TaskID,T.TaskName,0 as TaskLevel From
Task T where ParentTaskID is null Union All Select R.TaskID as ParentTaskID,
T.TaskID,T.TaskName,R.TaskLevel + 1 as TaskLevel From Task T Inner join
TaskWithTaskLevel R on T.ParentTaskID = R.TaskID ) Select * from
TaskWithTaskLevel
upvoted 15 times

  mlourinho 4 months ago


I agree, but it can be just UNION
upvoted 1 times

  mlourinho 3 months ago


I was wrong. It has to be UNION ALL. Recursive CTE will
only work with UNION ALL.
upvoted 3 times

  M4x 6 months, 1 week ago


UNION
OR UNION ALL, I think UNION for filter duplicates
upvoted 3 times

Question #13 Topic 1

DRAG DROP -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question in this series.
You query a database that includes two tables: Project and Task. The Project table includes the following columns:

When running an operation, you updated a column named EndTime for several records in the Project table, but updates to the corresponding task
records in the
Task table failed.
You need to synchronize the value of the EndTime column in the Task table with the value of the EndTime column in the project table. The solution
must meet the following requirements:
✑ If the EndTime column has a value, make no changes to the record.
✑ If the value of the EndTime column is null and the corresponding project record is marked as completed, update the record with the project
finish time.
Which four Transact-SQL segments should you use to develop the solution? To answer, move the appropriate Transact-SQL segments from the list
of Transact-
SQL segments to the answer area and arrange them in the correct order.
Select and Place:
Correct Answer:

Box 1: UPDATE T SET T.EndTime = P.EndTime


We are updating the EndTime column in the Task table.

Box 2: FROM Task AS T -


Where are updating the task table.
Box 3:INNER JOIN Project AS P on T.ProjectID = P.ProjectID
We join with the Project table (on the ProjectID columnID column).
Box 4: WHERE P.EndTime is NOT NULL AND T.EndTime is NULL
We select the columns in the Task Table where the EndTime column in the Project table has a value (NOT NULL),but where it is NULL in the Task
Table.
References:
https://msdn.microsoft.com/en-us/library/ms177523.aspx

  exam_taker5 7 months, 2 weeks ago


The first box should be the UPDATE T statement, as we
are updating the T table, not the P table.
upvoted 15 times

  Tazul 6 months, 3 weeks ago


Box 1: UPDATE T SET T.EndTime = P.EndTime
upvoted 7 times

  prakash101179 5 months, 2 weeks ago


Answer should be - Update T SET T.EndTime = P.EndTime
FROM Tasks as T INNER JOIN Projects AS P ON T.ProjectId = P.ProjectID WHERE
P.EndTime is not null and T.EndTime is NULL
upvoted 14 times

Question #14 Topic 1

You need to create a database object that meets the following requirements:
✑ accepts a product identified as input
✑ calculates the total quantity of a specific product, including quantity on hand and quantity on order
✑ caches and reuses execution plan
✑ returns a value
✑ can be called from within a SELECT statement
✑ can be used in a JOIN clause
What should you create?

A. an extended stored procedure

B. a user-defined scalar function

C. a user-defined stored procedure that has an OUTPUT parameter

D. a temporary table that has a columnstore index


Correct Answer: B
User-defined scalar functions are execution plans that accept parameters, perform an action such as a complex calculation, and returns the
result of that action as a value. The return value can either be a single scalar value or a result set. Furthermore the execution plan is cached and
reusable.
User-defined scalar functions can also be called from within a SELECT statement and can be used in a JOIN clause.
Incorrect Answers:
A: Using extended stored procedures is not recommended as they has been deprecated. CLR Integration should be used instead of extended
stored procedures.
C: Stored procedures cannot be used in a SELECT statement or in a JOIN clause.
D: A temporary table is a result set and not a value.
References:
https://www.c-sharpcorner.com/UploadFile/996353/difference-between-stored-procedure-and-user-defined-functio/

  Oleksii_D 1 month, 2 weeks ago


Can a
user-defined scalar function be inlined?
upvoted 1 times

  AnsB 1 month, 2 weeks ago


I Think it is
inlined.
upvoted 1 times

  Barbedx 4 weeks ago


But how user-defined SCALAR function can be used in JOIN
clause? I think this imposible
upvoted 1 times

  gtc108 1 week, 6 days ago


Scalar valued function return single value (not table)
so you cannot use joins. If it is a table valued function you can use the
following as another way then Using Apply.
upvoted 1 times

  tcroots19 1 week, 3 days ago


You could use it in a join, as the value of something,
couldn't you, very similar to FROM Y JOIN x ON x.key = y.key AND
x.someFilterCol = dbo.functA(prodId) right?
upvoted 1 times

Question #15 Topic 1

HOTSPOT -
You have the following stored procedure:

You run the following Transact-SQL statements:


What is the result of each Transact-SQL statement? To answer, select the appropriate options in the answer area.
Hot Area:

Correct Answer:

Box 1: All transactions are rolled back.


The first IF-statement, IF @CODE = 'C2323' AND @ApplicationID = 1, will be true, an error will be raised, the error will be caught in the CATCH
block, and the only transaction that has been started will be rolled back.
Box 2: Only Log1, Log2, and Log3 tables are updated.
The second IF-statement, IF @Code = 'C2323', will be true, so the second transaction will be rolled back, but log1, log2, and log3 was updated
before the second transaction.

  Tazul 6 months, 3 weeks ago


For both case,
correct answer:All Transactions are Rolled Back Ref:"When nesting transactions,
this same statement rolls back all inner transactions to the outermost BEGIN
TRANSACTION statement. "
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/rollback-transaction-transact-sql?view=sql-server-2016
upvoted 9 times

  Tazul 6 months, 3 weeks ago


I've tested the code as well
upvoted 8 times

  M4x 6 months, 1 week ago


Me too. For
both case, correct answer:All Transactions are Rolled Back
upvoted 8 times

  moehijawe 2 months ago


correct answer for both : All Transactions are Rolled
Back
upvoted 5 times

  tcroots19 1 week, 3 days ago


Question here, I changed the IF @Code = 'C2323'
--ROLLBACK TRAN to COMMIT TRAN It actually changes my @@TRANCOUNT from 2 ->
0, I would have expected 1 and it to not actually commit b/c in a nested
TRAN
upvoted 1 times

Question #16 Topic 1

HOTSPOT -
You need to develop a Transact-SQL statement that meets the following requirements:
✑ The statement must return a custom error when there are problems updating a table.
✑ The error number must be value50555.
✑ Theerror severity level must be14.
✑ A Microsoft SQL Server alert must be triggered when the error condition occurs.
Which Transact-SQL segment should you use for each requirement? To answer, select the appropriate Transact-SQL segments in the answer area.
Hot Area:

Correct Answer:

Box 1: TRY"¦CATCH -
The TRY...CATCH Transact-SQL construct implements error handling for Transact-SQL that is similar to the exception handling in the Microsoft
Visual C# and
Microsoft Visual C++ languages. A group of Transact-SQL statements can be enclosed in a TRY block. If an error occurs in the TRY block,
control is passed to another group of statements that is enclosed in a CATCH block.
Box 2: RAISERROR(50555, 14, 1 'The update failed.") WITH LOG
We must use RAISERROR to be able to specify the required severity level of 14, and we should also use the LOG option, which Logs the error in
the error log and the application log for the instance of the Microsoft SQL Server Database Engine, as this enable a MS MS SQL SERVER alert to
be triggered.
Note: RAISERROR generates an error message and initiates error processing for the session. RAISERROR can either reference a user-defined
message stored in the sys.messages catalog view or build a message dynamically. The message is returned as a server error message to the
calling application or to an associated CATCH block of a TRY"¦CATCH construct.
Incorrect Answers:
Not THROW: THROW does not have a severity parameter.
References:
https://msdn.microsoft.com/en-us/library/ms175976.aspx
https://msdn.microsoft.com/en-us/library/ms178592.aspx
  Bartek 6 months, 1 week ago
"A Microsoft
SQL Server alert must be triggered when the error condition occurs." Seems to be
correct answer "..With Nowait" Ref. Itzik Ben-Gan QUerying Microsoft Sql Server
2014" "You can issue RAISERROR with a severity level > 20 if you use the
WITH LOG option and if you have the SQL Server sysadmin role. SQL Server will
then terminate the connection when the error is raised. -You can use RAISERROR
with NOWAIT to send messages immediately to the client. The message does not
wait in the output buffer before being sent."
upvoted 1 times

  M4x 6 months, 1 week ago


With NO WAIT
you send immediately the error to the CLIENT (ASP.NET, Console, ecc) with LOG
you send the error to the SQL Server logging.
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/raiserror-transact-sql?view=sql-server-2017
upvoted 5 times

  tcroots19 1 week, 3 days ago


so, what are you saying, it mentioned "when the error
condition occurs", which seems like the NO WAIT WITH LOG seems like it would
buffer...then send, right?
upvoted 1 times

  Robintang0924 1 month, 4 weeks ago


It
has to be raiserror to meet requirement of 'severity level must be 14.' since by
default throw always return 16. Plus we need nowait option to return error to
client immediately.
upvoted 1 times

  flashed 4 weeks ago


No, the condition severity 16 is only for THROW, not for
RAISEERROR
upvoted 1 times

  gtc108 1 month ago


xp_logevent can be used to log a user-defined message in
the SQL Server log file and in the Windows Event Viewer. xp_logevent can be used
to send an alert without sending a message to the client. Correct answer is WITH
LOG:
https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/xp-logevent-transact-sql?view=sql-server-ver15
upvoted 1 times

Question #17 Topic 1

DRAG DROP -
You need to create a stored procedure to update a table named Sales.Customers. The structure of the table is shown in the exhibit. (Click the
exhibit button.)
The stored procedure must meet the following requirements:
✑ Accept two input parameters.
✑ Update the company name if the customer exists.
✑ Return a custom error message if the customer does not exist.
Which five Transact-SQL segments should you use to develop the solution? To answer, move the appropriate Transact-SQL segments from the list
of Transact-
SQL segments to the answer area and arrange them in the correct order.
NOTE: More than one order of answer choices is correct. You will receive credit for any of the correct orders you select.
Select and Place:

Correct Answer:
  Robintang0924 1 month, 4 weeks ago
By
given statements, below version should be the optimized one since it only needs
to read table once when there is no existing custid in the table. 1.CREATE
PROCEDURE sales.modcompanyname @custId int, @newname nvarchar(40) as 2.IF NOT
EXISTS (SELECT custid FROM Sales.Customers WHERE custid = @custID) 3.BEGIN THROW
55555, 'The customer ID does not exist' , 1 END 4.UPDATE sales.customers SET
companyname=@newname where custid=@custID However, if we can come up something
by ourselves, then below should be even better performance since we only need to
touch table once no matter we got existing custid in table or not (above
solution still need to access table twice when custid existed in table):
1.CREATE PROCEDURE sales.modcompanyname @custId int, @newname nvarchar(40) as
2.UPDATE sales.customers SET companyname=@newname where custid=@custID 3. IF
@@ROWCOUNT = 0 4.BEGIN THROW 55555, 'The customer ID does not exist' , 1
END
upvoted 2 times

  DEBRA 4 weeks ago


but the response is asking for 5 not 4 sql statements
which means is 1. create stored procedure.... 2. if exist .... 3. update... 4.
if not exist... 5. throw error
upvoted 4 times

  Barbedx 4 weeks ago


but also can be 1. create stored procedure.... 2. if
not exist 3. throw error... 4. rollback?(useless) 5. update
upvoted 1 times

  Lindley 1 month ago


@Robintang0924 Excellent, thanks!
upvoted 1 times

Question #18 Topic 1

You need to create an indexed view that requires logic statements to manipulate the data that the view displays.
Which two database objects should you use? Each correct answer presents a complete solution.

A. a user-defined table-valued function

B. a CRL function

C. a stored procedure

D. a user-defined scalar function

Correct Answer: AC
You can create a database object inside an instance of SQL Server that is programmed in an assembly created in the Microsoft .NET Framework
common language runtime (CLR). Database objects that can leverage the rich programming model provided by the common language runtime
include aggregate functions, functions, stored procedures, triggers, and types.

  Tazul 6 months, 2 weeks ago


B,D
https://www.briefmenow.org/microsoft/which-two-database-objects-should-you-use/
upvoted 4 times

  mattia_88 4 months, 3 weeks ago


If you create
a function with option "SCHEMABINDING" you can use user-defined function table
and scalar
upvoted 1 times

  Robintang0924 1 month, 4 weeks ago


A,C
a user-defined table-valued function can return what we wanted expression
values as long as we specify schemabinding option. stored procedure with table
value variable as output parameter could also achieve the same purpose. B,D
doesn't meet requirement since CLR function is not a DB object and scalar
function didn't meet requirement of returning multiple rows.
upvoted 1 times
Question #19 Topic 1

DRAG DROP -
You have two tables named UserLogin and Employee respectively.
You need to create a Transact-SQL script that meets the following requirements:
✑ The script must update the value of the IsDeleted column for the UserLogin table to 1 if the value of the Id column for the UserLogin table is
equal to1.
✑ The script must update the value of the IsDeleted column of the Employee table to 1 if the value of the Id column is equal to 1 for the Employee
table when an update to the UserLogin table throws an error.
✑ The error message "No tables updated!" must be produced when an update to the Employee table throws an error.
Which five Transact-SQL segments should you use to develop the solution? To answer, move the appropriate Transact-SQL segments from the list
of Transact-
SQL segments to the answer area and arrange them in the correct order.
Select and Place:

Correct Answer:

A TRY block must be immediately followed by an associated CATCH block. Including any other statements between the END TRY and BEGIN
CATCH statements generates a syntax error.
References:
https://msdn.microsoft.com/en-us/library/ms175976.aspx
  Houdinni 7 months ago
You should have the second TRY CATCH block nested inside
the first CATCH block, in order to fulfill the condition: "The script must
update the value of the IsDeleted column of the Employee table to 1 if the value
of the Id column is equal to 1 for the Employee table when an update to the
UserLogin table throws an error."
upvoted 7 times

  Bartek 6 months, 1 week ago


Both
condition are fine. You could put something like this answer eg. : BEGIN TRY
SELECT 1/0 END TRY BEGIN CATCH END CATCH BEGIN TRY SELECT 1/0 END TRY BEGIN
CATCH RAISERROR ('NO TABLES UPDATED',16,1) END CATCH And it II works fine
Or You could do something like Houdinni says like eg : BEGIN TRY SELECT 1/0
END TRY BEGIN CATCH BEGIN TRY SELECT 1/0 END TRY BEGIN CATCH
RAISERROR ('NO TABLES UPDATED',16,1) END CATCH END CATCH
upvoted 3 times

  RedHead 6 months ago


BEGIN TRY SELECT 1/0 END TRY BEGIN CATCH END CATCH BEGIN
TRY SELECT 1/0 END TRY BEGIN CATCH RAISERROR ('NO TABLES UPDATED',16,1) END
CATCH above answer is wrong because if condition is true than it gives error. ;
BEGIN TRY SELECT 1/1 END TRY BEGIN CATCH END CATCH BEGIN TRY SELECT 1/0 END TRY
BEGIN CATCH RAISERROR ('NO TABLES UPDATED',16,1) END CATCH below is ok BEGIN
TRY SELECT 1/0 END TRY BEGIN CATCH BEGIN TRY SELECT 1/0 END TRY BEGIN CATCH
RAISERROR ('NO TABLES UPDATED',16,1) END CATCH END CATCH
upvoted 3 times

  M4x 6 months, 1 week ago


Is not clear
WHEN update the Employee table. WHEN the UserLogin throw an error OR ALWAYS:
also when the userLogin update throw error
upvoted 1 times

  HS_ 5 months, 3 weeks ago


I dont
understand as there is no END TRY option?
upvoted 3 times

  Niv 5 months ago


The right order is: 3 --> 5 --> 6 --> 1 -->
You have to use nested Try...Catch
upvoted 1 times

  moehijawe 2 months ago


begin try update dbo.userlogin ...... begin try update
dbo.employee end try begin catch end catch begin catch raise end catch
upvoted 1 times

  moehijawe 2 months ago


sorry, updated: begin try update dbo.userlogin ......
begin catch begin try update dbo.employee end try begin catch raise end catch
end catch
upvoted 1 times

  Robintang0924 1 month, 4 weeks ago


Correct(and
complete) solution should look like below: BEGIN TRY UPDATE dbo.UserLogin SET
IsDeleted = 1 WHERE Id=1 END TRY BEGIN CATCH BEGIN TRY UPDATE dbo.Employee SET
IsDeleted=1 WHERE Id=1 END TRY BEGIN CATCH Raiserror ('No tables updated!', 16,
1) END CATCH END CATCH
upvoted 6 times

Question #20 Topic 1

SIMULATION -
You work for an organization that monitors seismic activity around volcanos. You have a table named GroundSensors. The table stored data
collected from seismic sensors. It includes the columns describes in the following table:
The database also contains a scalar value function named NearestMountain that returns the name of the mountain that is nearest to the sensor.
You need to create a query that shows the average of the normalized readings from the sensors for each mountain. The query must meet the
following requirements:
✑ Include the average normalized readings and nearest mountain name.
✑ Exclude sensors for which no normalized reading exists.
✑ Exclude those sensors with value of zero for tremor.
Construct the query using the following guidelines:
✑ Use one part names to reference tables, columns and functions.
✑ Do not use parentheses unless required.
✑ Do not use aliases for column names and table names.
Do not surround object names with square brackets.
Part of the correct Transact-SQL has been provided in the answer area below. Enter the code in the answer area that resolves the problem and
meets the stated goals or requirements. You can add code within the code that has been provided as well as below it.

Use the Check Syntax button to verify your work. Any syntax or spelling errors will be reported by line and character position.

Correct Answer: Please see explanation


SELECT Average(NormalizedReading), NearestMountain(SensorID)

FROM GroundSensors -
WHERE TREMOR IS NOT 0 AND NormalizedReading IS NOT NULL
GROUP BY NearestMountain(SensorID)
GROUP BY is a SELECT statement clause that divides the query result into groups of rows, usually for the purpose of performing one or more
aggregations on each group. The SELECT statement returns one row per group.
References:
https://msdn.microsoft.com/en-us/library/ms177673.aspx

  Dieter 6 months, 3 weeks ago


"WHERE TREMOR
IS NOT 0...L" > should be "WHERE TREMOR <> 0 " instead, since you need
to check for the value zero.
upvoted 7 times

  M4x 6 months, 1 week ago


SELECT
Average(NormalizedReading), NearestMountain(SensorID) must be SELECT
AVG(NormalizedReading), NearestMountain(SensorID)
upvoted 5 times

  prakash101179 5 months, 2 weeks ago


Answer should be - Select avg(normalizedreading),
NearestMountain(SensorID) from groundsensor where normalizedreading is not null
or tremor <> 0 group by NearestMountain(SensorID)
upvoted 5 times

  Barbedx 4 weeks ago


this should be AND statement
upvoted 1 times

  BenAsare 4 months, 1 week ago


SELECT
AVG(normalizedreading), NearestMountain(SensorID) FROM groundsensor WHERE
normalizedreading is not null AND tremor <> 0 GROUP BY
NearestMountain(SensorID)
upvoted 6 times

  hgi 1 month, 3 weeks ago


imo, it's
logical to use Location to find the nearest mountain...
upvoted 2 times

  Vanesa30 1 month ago


select NearestMountain(SensorID),Avg(NormalizeReading)
from GroundSensors where NormalizedReading is null) or (Tremor=0) group by
NearestMountain(SensorID)
upvoted 1 times

  DEBRA 4 weeks, 1 day ago


select avg(normalisedReading), nearestmountain(SensorId)
from Ground sensors where tremorID <> 0 and normalisedreading is not null
order by nearestmountain(SensorId)
upvoted 1 times

  tcroots19 1 week ago


I'm not sure you actually need the NULL check b/c AVG
seems to ignore these
https://stackoverflow.com/questions/22220449/sql-avg-with-null-values
upvoted 1 times

Question #21 Topic 1


DRAG DROP -
You have a table named HR.Employees as shown in the exhibit. (Click the exhibit button.)

You need to write a query that will change the value of the job title column to Customer Representative for any employee who lives in Seattle and
has a job title of
Sales Representative. If the employee does not have a manager defined, you must not change the title.
Which three Transact-SQL segments should you use to develop the solution? To answer, move the appropriate Transact-SQL segments from the
list of Transact-
SQL segments to the answer area and arrange them in the correct order.
Select and Place:

Correct Answer:

References:
https://msdn.microsoft.com/en-us/library/ms177523.aspx
  Vanesa30 1 month ago
update Employees set title='Custom Representative'
where city ='Seatle' and title = 'Sales Representative' and mgrid is not
null
upvoted 2 times

Question #22 Topic 1

HOTSPOT -
You have the following Transact-SQL query:

What type of functions are used in the query? To answer, select the appropriate options in the answer area.
NOTE: Each correct selection is worth one point.
Hot Area:

Correct Answer:

Box 1: Scalar -
The return value of a function can either be a scalar (single) value or a table.
Box 2: Table-Valued -
The APPLY operator allows you to invoke a table-valued function for each row returned by an outer table expression of a query. The table-valued
function acts as the right input and the outer table expression acts as the left input. The right input is evaluated for each row from the left input
and the rows produced are combined for the final output. The list of columns produced by the APPLY operator is the set of columns in the left
input followed by the list of columns returned by the right input.
References:
https://msdn.microsoft.com/en-us/library/ms186755.aspx
https://technet.microsoft.com/en-us/library/ms175156(v=sql.105).aspx

  Vanesa30 1 month ago


The first one is UDF Scalar because only returns a value
, whereas the second one is a Table-based function which returns a
table
upvoted 1 times

  Vanesa30 1 month ago


I meant the second onse is table-valued instead of
table-based
upvoted 1 times

Question #23 Topic 1

DRAG DROP -
You have a database that includes the following tables:

You need to create a list of all customer IDs and the date of the last order that each customer placed. If the customer has not placed any orders,
you must return the date January 1, 1900. The column names must be CustomerID and LastOrderDate.
Which four Transact-SQL segments should you use to develop the solution? To answer, move the appropriate Transact-SQL segments from the list
of Transact-
SQL segments to the answer area and arrange them in the correct order.
Select and Place:

Correct Answer:

Box 1: SELECT..COALESCE"¦
The COALESCE function evaluates the arguments in order and returns the current value of the first expression that initially does not evaluate to
NULL.
Box 2: ..LEFT OUTER JOIN..
The LEFT JOIN (LEFT OUTER JOIN) keyword returns all rows from the left table (table1), with the matching rows in the right table (table2). The
result is NULL in the right side when there is no match. A customer might have no orders so the right table must be allowed have a NULL value.

Box 3: ON c.custid = o.custid -


We JOIN on the custID column, which is available in both tables.

Box 4: GROUP BY c.custid -


References:
https://technet.microsoft.com/en-us/library/ms189499(v=sql.110).aspx http://www.w3schools.com/sql/sql_join_left.asp

  fabzo 4 months, 1 week ago


WHY or we
grouping by Custid and not LastOrderDate
upvoted 1 times

  BenAsare 4 months, 1 week ago


We are not
grouping by LastOrderDate because it is an alias of an aggregate
function.
upvoted 1 times
  Robintang0924 1 month, 3 weeks ago
2
issues here for Fabzo's question: 1. From data meaning and group by function
perspective: we group by only custid column and use aggregate function on last
order date means: for those records with same custid(in the same group), find me
(only one) max date so our final result would be only one max date for each
custid. If we group by both custid and orderdate column then for every custid we
will get many order/date back which is not what we wanted -- we only need last
order of customer. 2. From SQL syntax perspective, we can't refer to an
alias(like LastOrderDate) in group by function in whatever situation because
alias was evaluated/assigned value AFTER group by clause thus it will error out
regardless if it makes sense from data meaning perspective or not.
upvoted 2 times

Question #24 Topic 1

HOTSPOT -
You run the following Transact-SQL statement:

You need to ensure that you can insert data into the table.
What are the characteristics of the data? To answer, select the appropriate options in the answer area.
Hot Area:
Correct Answer:

Box 1: custid -
IDENTITY indicates that the new column is an identity column. When a new row is added to the table, the Database Engine provides a unique,
incremental value for the column. Identity columns are typically used with PRIMARY KEY constraints to serve as the unique row identifier for the
table.

Box2: postalcode -
postalcode is declared as NOT NULL, which means that a value must be inserted.

Box 3: region -
Fax is also a correct answer. Both these two columns are declared as NULL, which means that data entry is optional.
References:
https://msdn.microsoft.com/en-us/library/ms174979.aspx

  M4x 6 months, 1 week ago


For optional
column also region is a good answer
upvoted 4 times

  Bartek 6 months ago


Yes
and I think for "..must be inserted" is for custid also. cause is marked as not
null and we cannot insert any value without filling identity property
upvoted 1 times

  Almosawi 5 months ago


Custid is auto inserted by identity func.
upvoted 3 times

  mattia_88 4 months, 3 weeks ago


Almosawi is
correct
upvoted 1 times

  Robintang0924 1 month, 3 weeks ago


By
default, identity column would be automatically populated according to column
increment setting and it can't be inserted/updated. Unless if you manually set
Identify_insert on in some situations, e.g. if you want to copy all current
values from existing table to this table and you still want to use old identity
values instead of generating new identity for each inserted rows.
https://docs.microsoft.com/en-us/sql/t-sql/statements/set-identity-insert-transact-sql?view=sql-server-ver15
upvoted 1 times
  Vanesa30 1 month ago
Values cannot be entered into this column: custid (is
generated automatically) A must value must be inserted into this column:
postalcode Data entry into this column is optional : fax and region
upvoted 1 times

Question #25 Topic 1

SIMULATION -
You create a table named Sales.Orders by running the following Transact-SQL statement:

You need to write a query that meets the following requirements:


✑ removes orders from the table that were placed before January 1, 2012
✑ uses the date format of YYYYMMDD
✑ ensures that the order has been shipped before deleting the record
Construct the query using the following guidelines:
✑ use one-part column names and two-part table names
✑ do not use functions
✑ do not surround object names with square brackets
✑ do not use variables
do not use aliases for column names and table names
Part of the correct Transact-SQL has been provided in the answer area below. Enter the code in the answer area that resolves the problem and
meets the stated goals or requirements. You can add code within the code that has been provided as well as below it.

Use the Check Syntax button to verify your work. Any syntax or spelling errors will be reported by line and character position.

Correct Answer: See the solution below


DELETE FROM Sales.Orders -
WHERE OrderDate < '2012-01-01' AND ShippedDate NOT NULL
References:
https://msdn.microsoft.com/en-us/library/ms189835.aspx
https://msdn.microsoft.com/en-us/library/bb630352.aspx

  Houdinni 7 months ago


DELETE FROM Sales.Orders WHERE OrderDate < '20120101'
AND ShippedDate IS NOT NULL
upvoted 14 times

  fabzo 4 months, 1 week ago


I think both
would be correct "IS NOT NULL" or "NOT NULL"
upvoted 1 times

  Barbedx 4 weeks ago


No, sql don't have command "not null" only "is not null"
Also, we need use YYYYMMDD Format, like Houdinni says - '20120101'
upvoted 2 times

Question #26 Topic 1

SIMULATION -
You have a database that contains the following tables.

You need to create a query that lists the lowest-performing salespersons based on the current year-to-date sales period. The query must meet the
following requirements:
✑ Return a column named Fullname that includes the salesperson FirstName, a space, and then LastName.
✑ Include the current year-to-date sales for each salesperson.
✑ Display only data for the three salespersons with the lowest year-to-year sales values.
✑ Exclude salespersons that have no value for TerritoryID.
Construct the query using the following guidelines:
✑ Use the first letter of a table name as the table alias.
✑ Use two-part column names.
✑ Do not surround object names with square brackets.
✑ Do not use implicit joins.
✑ Use only single quotes for literal text.
Use aliases only if required.
Part of the correct Transact-SQL has been provided in the answer area below. Enter the code in the answer area that resolves the problem and
meets the stated goals or requirements. You can add code within the code that has been provided as well as below it.

Use the Check Syntax button to verify your work. Any syntax or spelling errors will be reported by line and character position.
Correct Answer: Please see explanation

On ordering: ASC | DESC -


Specifies that the values in the specified column should be sorted in ascending or descending order. ASC sorts from the lowest value to highest
value. DESC sorts from highest value to lowest value. ASC is the default sort order. Null values are treated as the lowest possible values.
References:
https://msdn.microsoft.com/en-us/library/ms189463.aspx

  okh 5 months, 3 weeks ago


Should be ON
S.PersonID = P.PersonID
upvoted 5 times

  moehijawe 2 months ago


select top(3) concat(p.FirstName, ' ', p.lastname) as
FullName, s.SalesYTD as SalesYTD from SalesPerson as s join Person as p
on(s.PersonId = p.PersonId) where s.TerritoryID is not null order by
s.SalesYTD
upvoted 2 times

  Robintang0924 1 month, 3 weeks ago


Besides
correct join column, we should also consider possible null values since there is
no clear declaration of those columns: 1. NULLability of firstname and lastname,
any of null values in these 2 columns could result in a null full name which is
NOT what we wanted, Moehijawe already provided a good solution of using concat
which could safely take care of null and yield meaning result of concated
string. 2. SalesYTD, if it contains null value, then we might see first 3 rows
as null value since null is considered the lowest value. Above being said,
below SQL should be a more complete solution to question(I wish I could come up
with something in an elegant way like 'order by s.SalesYTD nulls last' but
unfortunately SQL server doesn't support this ANSI SQL feature ): select top(3)
concat(p.FirstName, ' ', p.lastname) as FullName, s.SalesYTD as SalesYTD from
SalesPerson as s join Person as p on(s.PersonId = p.PersonId) where
s.TerritoryID is not null ORDER BY CASE WHEN s.SalesYTD IS NULL THEN
1 ELSE 0 END, s.SalesYTD;
upvoted 2 times

Question #27 Topic 1

SIMULATION -
You have a database that contains the following tables.

You need to create a query that lists all complaints from the Complaints table, and the name of the person handling the complaints if a person is
assigned. The
ComplaintID must be displayed first, followed by the person name.
Construct the query using the following guidelines:
✑ Use two-part column names.
✑ Use one-part table names.
✑ Do not use aliases for column names or table names.
✑ Do not use Transact-SQL functions.
✑ Do not use implicit joins.
✑ Do not surround object names with square brackets.
Part of the correct Transact-SQL has been provided in the answer area below. Enter the code in the answer area that resolves the problem and
meets the stated goals or requirements. You can add code within the code that has been provided as well as below it.
Use the Check Syntax button to verify your work. Any syntax or spelling errors will be reported by line and character position.
Correct Answer: Please see explanation

References:
https://technet.microsoft.com/en-us/library/ms190014(v=sql.105).aspx

  Dieter 6 months, 3 weeks ago


First JOIN
=> LEFT OUTER JOIN Second JOIN => INNER JOIN
upvoted 1 times

  Dieter 6 months, 3 weeks ago


Update: First JOIN => INNER JOIN Second JOIN =>
RIGHT OUTER JOIN (since all complaints should be displayed)
upvoted 4 times

  Bartek 6 months ago


EXAMPLE
CODE AND TWO WAYS OF SOLUTION CREATE TABLE #PERSONS ( PERSONID INT, NAME
VARCHAR(15) ) CREATE TABLE #CONTACTS ( PERSONID INT, COMPLAINTID INT ) CREATE
TABLE #COMPLAINTS ( COMPLAINTID INT, COMPLAINT VARCHAR(10) ) INSERT INTO
#PERSONS (PERSONID, NAME) VALUES (1, 'BARTEK'), (2,'KASIA'),
(3,'TOMEK'),(4,'MARTA') INSERT INTO #CONTACTS (PERSONID, COMPLAINTID) VALUES
(1,1),(2,2),(3,3),(4,4) INSERT INTO #COMPLAINTS (COMPLAINTID, COMPLAINT) VALUES
(1,'SKARGA'),(2,'SKARGA'),(3,'SKARGA'),(3,'SKARGA'),(4,'SKARGA'),(5,'SKARGA'),(6,'SKARGA')
SELECT A.COMPLAINTID,C.NAME FROM #COMPLAINTS AS A LEFT JOIN #CONTACTS AS B ON
A.COMPLAINTID = B.COMPLAINTID LEFT JOIN #PERSONS AS C ON C.PERSONID = B.PERSONID
SELECT C.COMPLAINTID,A.NAME FROM #PERSONS AS A JOIN #CONTACTS AS B ON
A.PERSONID = B.PERSONID RIGHT JOIN #COMPLAINTS AS C ON B.COMPLAINTID =
C.COMPLAINTID
upvoted 5 times

  itdoesntmatter 6 months ago


I
do not see any ComplaintID column in Contacts table.. So the only way to link
Contact table to Complaints table is Complaint column
upvoted 3 times

  itdoesntmatter 6 months ago


But
i would rather say that this is a question error and Complaint column should be
ComplaintID
upvoted 2 times

  fabzo 4 months, 1 week ago


Would this
also be correct: SELECT Complaints.ComplaintID, Persons.Name From Complaints
INNER JOIN Contacts ON Contacts.Complaints=ComplaintsID INNER JOIN Persons ON
Persons.PersonID=Contacts.PersonID ORDER BY Complaints.ComplaintID,
Persons.Name
upvoted 2 times

  mlourinho 4 months ago


The exercise says "All Complaints and the person if
assigned". Meaning the first table should be Complaints and the connection to
the others must be LEFT JOIN
upvoted 2 times

  moehijawe 2 months ago


select Complaints.ComplaintID, Persons.name from
Complaints left join Contacts on (Complaints.ComplaintID = Contacts.Complaint)
left join Persons on (Contacts.PersonID = Persons.PersonID)
upvoted 4 times

  Robintang0924 1 month, 3 weeks ago


This
question seems a bit ambiguous especially for PK/FK naming convention. 1.
Assume we have 1 to M relationship between Complaints and Contacts based on
Complaints.ComplaintId(PK) and Contacts.Complaint(FK). 2. Assume we have 1 to M
relationship between Persons and Contacts based on Persons.PersonID(PK) and
Contacts.PersonID(FK). 3. You need to list all complaints from the Complaints
table, and the name of the person handling the complaints if a person is
assigned. Based on above assumption, below left join SQL start from Complaints
table should work -- it will list every ComplaintID in Complaints table but
correlated Persons name might be null: select Complaints.ComplaintID,
Persons.name from Complaints left join Contacts on (Complaints.ComplaintID =
Contacts.Complaint) left join Persons on (Contacts.PersonID =
Persons.PersonID);
upvoted 4 times

Question #28 Topic 1

You have a database that includes the tables shown in the exhibit. (Click the exhibit button.)

You need to create a list of all customers, the order ID for the last order that the customer placed, and the date that the order was placed. For
customers who have not placed orders, you must substitute a zero for the order ID and 01/01/1990 for the date.
Which Transact-SQL statement should you run?
A.

B.

C.
D.

A. Option A

B. Option B

C. Option C

D. Option D

Correct Answer: A
ISNULL Syntax: ISNULL ( check_expression , replacement_value ) author:"Luxemburg, Rosa"
The ISNULL function replaces NULL with the specified replacement value. The value of check_expression is returned if it is not NULL; otherwise,
replacement_value is returned after it is implicitly converted to the type of check_expression.
References:
https://msdn.microsoft.com/en-us/library/ms184325.aspx

  Dieter 6 months, 3 weeks ago


However, A is
not totally correct since the replacement of the default date is not
mentioned.
upvoted 3 times

  mlourinho 4 months ago


If you execute DECLARE @TESTE DATE = NULL SELECT
ISNULL(@TESTE, '') , you will find that the result will be 1900-01-01
upvoted 2 times

  Bahalzamon 3 months, 1 week ago


true, but
1900-01-01 was not what was requested, it was 01/01/1990. your about 90 years
off. =P
upvoted 1 times

  Tazul 6 months, 2 weeks ago


None of them correct. Correct answer Select
C.CustomerID, ISNULL(MAX(SOH.SalesOrderID),0) SalesOrderID,
ISNULL(MAX(SOH.OrderDate),'01/01/1990') OrderDate from Sales.Customers C left
outer join Sales.SalesOrderHeader SOH on C.CustomerID=SOH.CustomerID group by
C.CustomerID order by C.CustomerID
upvoted 9 times

  Bartek 6 months ago


ISNULL(MAX(SOH.SalesOrderID),0) SalesOrderID This II
type You max number of digit include in orderid This is wrong, You should group
by salesoorderid too
upvoted 1 times

  Tazul 5 months, 3 weeks ago


If you add
SalesOrderID to Group By, then result will include all SalesOrderID, not the
latest one. You can test using following script- Select C.CustomerID,
SOH.SalesOrderID, max(SOH.OrderDate) OrderDate from Sales.Customers C left outer
join Sales.SalesOrderHeader SOH on C.CustomerID=SOH.CustomerID group by
C.CustomerID, SOH.SalesOrderID
upvoted 4 times

  Scooter123 4 months, 2 weeks ago


Agree with
Tazul
upvoted 1 times

  zritter19 2 months, 3 weeks ago


Tazul indeed
have written the best solution
upvoted 1 times

  shruthiBattula 3 weeks, 5 days ago


CREATE
TABLE #PERSONS ( PERSONID INT, NAME VARCHAR(15) ) CREATE TABLE #orders ( orderid
int, personid int, orderdate date ) SELECT * FROM #PERSONS SELECT * FROM #ORDERS
INSERT INTO #PERSONS (PERSONID, NAME) VALUES (1, 'BARTEK'), (2,'KASIA'),
(3,'TOMEK'),(4,'MARTA'),(5,'SHRAVY') INSERT INTO
#ORDERS(orderid,personid,orderdate) VALUES
(1,1,'2019-01-01'),(2,2,'2019-01-02'),(3,3,'2019-01-02'),(4,2,'2019-01-03')
select c.PERSONID, isnull(max(o.orderid),0) as orderid,
isnull(max(o.orderdate),'19900101') as lastorderdate from #PERSONS c left join
#orders o on c.PERSONID=o.PERSONID group by c.PERSONID--,isnull(o.orderid,0)
ORDER BY C.PERSONID
upvoted 1 times

  tcroots19 5 days, 1 hour ago


The problem here is what if your latest order has a
lower OrderId (flip the 4 and 2 for person 2), it always pulls the 4
upvoted 1 times

  tcroots19 4 days, 7 hours ago


here's the
solution using the tables from ShruthiBattuala
https://stackoverflow.com/questions/48528584/sql-query-to-get-three-most-recent-records-by-customer
OR
https://stackoverflow.com/questions/331367/sql-statement-help-select-latest-order-for-each-customer
select PERSONID, NAME, orderdate, orderid FROM ( SELECT c.PERSONID, c.NAME,
o.orderdate, o.orderid, row_number() OVER(PARTITION BY c.PERSONID ORDER BY
o.orderdate desc, o.orderid desc) AS rowNum FROM dbo.Persons AS C JOIN
dbo.Orders AS O ON c.PERSONID = o.personid ) AS Records WHERE rowNum =
1;
upvoted 1 times

Question #29 Topic 1

You have a database that contains the following tables:

Customer -

CustomerAudit -

Where the value of the CustomerID column equals 3, you need to update the value of the CreditLimit column to 1000 for the customer. You must
ensure that the change to the record in the Customer table is recorded on the CustomerAudit table.
Which Transact-SQL statement should you run?
A.

B.
C.

D.

A. Option A

B. Option B

C. Option C

D. Option D

Correct Answer: D
The OUTPUT Clause returns information from, or expressions based on, each row affected by an INSERT, UPDATE, DELETE, or MERGE
statement. These results can be returned to the processing application for use in such things as confirmation messages, archiving, and other
such application requirements. The results can also be inserted into a table or table variable. Additionally, you can capture the results of an
OUTPUT clause in a nested INSERT, UPDATE, DELETE, or MERGE statement, and insert those results into a target table or view.
Note: If the column modified by the .RITE clause is referenced in an OUTPUT clause, the complete value of the column, either the before image
in deleted.column_name or the after image in inserted.column_name, is returned to the specified column in the tablevariable.
Incorrect Answers:
C: The deleted.Creditlimit should be inserted in the second column, the OldCreditLimit column, not the third column.
References:
https://msdn.microsoft.com/en-us/library/ms177564.aspx

Question #30 Topic 1

DRAG DROP -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question on this series.
You have a database that tracks orders and deliveries for customers in North America. System versioning is enabled for all tables. The database
contains the
Sales.Customers, Application.Cities, and Sales.CustomerCategories tables.
Details for the Sales.Customers table are shown in the following table:
Details for the Application.Cities table are shown in the following table:

Details for the Sales.CustomerCategories table are shown in the following table:

You are creating a report to show when the first customer account was opened in each city. The report contains a line chart with the following
characteristics:
✑ The chart contains a data point for each city, with lines connecting the points.
✑ The X axis contains the position that the city occupies relative to other cities.
✑ The Y axis contains the date that the first account in any city was opened.
An example chart is shown below for five cities:

During a sales promotion, customers from various cities open new accounts on the same date.
You need to write a query that returns the data for the chart.
How should you complete the Transact-SQL statement? To answer, drag the appropriate Transact-SQL segments to the correct locations. Each
Transact-SQL segment may be used once, more than once, or not at all. You may need to drag the split bar between panes or scroll to view
content.
NOTE: Each correct selection is worth one point.
Select and Place:

Correct Answer:

Box 1: RANK() OVER -


RANK returns the rank of each row within the partition of a result set. The rank of a row is one plus thenumber of ranks that come before the
row in question.
ROW_NUMBER and RANK are similar. ROW_NUMBER numbers all rows sequentially (for example 1, 2, 3, 4, 5).
Incorrect Answers:
DENSE_RANK returns the rank of rows within the partition of a result set, without any gaps in the ranking. The rank of a row is one plus the
number of distinct ranks that come before the row in question.
Box 2: (PARTITION BY CityID ORDER BY MIN(AccountOpenedDate) DESC)
Syntax for RANK: RANK ( ) OVER ( [ partition_by_clause ] order_by_clause )

Box 3: GROUP BY CityID -


References:
https://msdn.microsoft.com/en-us/library/ms176102.aspx

  Abhilash_KK 6 months, 1 week ago


Rank
function is irrelevant here, as we need only cityid and min(accountopendate) for
the chart
upvoted 2 times

  Bartek 6 months ago


Not true. On the chart we have numbers like 1,2,3,4,5
despite of citynames. We have attribute the earlier date to number 5 and the
newest date to number 1. In addition I think DENSE_RANK () II be better than
RANK () cause RANK() is returning eg. x = 1 | RANK(x) = 1, x = 1 | RANK(x) = 1,
x = 2 | RANK (x) = 3 WHEN DENSE_RANK() II return x = 1 | DENSE_RANK(x) = 1, x =
1 | DENSE_RANK(x) = 1, x = 2 | DENSE_RANK (x) = 2
upvoted 7 times
  Tazul 5 months, 3 weeks ago
wondering why
rank function needed??, one possible reason could be ranking the cities based on
min(accountopendate) desc order. In that case, following fits the answer boxes.
Select CityID, min(AccountOpenedDate), RANK() OVER(order by
min(AccountOpenedDate) desc) From Application.Cities inner join Sales.Customer
on CityID=PostalCityID group by CityID order by min(AccountOpenedDate)
desc
upvoted 3 times

  AnsB 1 month, 2 weeks ago


It should be
DENSE_RANK here.
upvoted 1 times

  avramov 4 months, 1 week ago


isn't it:
Select CityID, min(AccountOpenedDate), DENSE_RANK() OVER(order by
min(AccountOpenedDate) desc) From Application.Cities inner join Sales.Customer
on CityID=PostalCityID group by CityID order by min(AccountOpenedDate) desc why
needed a partition by?
upvoted 3 times

  hgi 1 month, 3 weeks ago


correct, it
should be without partition by, otherwise we don't compare with the other
cities
upvoted 1 times

  AnsB 1 month, 2 weeks ago


This is the
CORRECT answer. NO partition by needed here
upvoted 1 times

  Robintang0924 1 month, 3 weeks ago


We
don't need rank function, let's take a closer look at below requirements, a
group by/max combination is good enough to get what we wanted data. ✑ The X axis
contains the position that the city occupies relative to other cities. ✑ The Y
axis contains the date that the first account in any city was opened.
Furthermore, using data window function with group by clause could be very
tricky and challenge especially when they are working on same group (cityID in
our case), please check below SQL logic execution order, data window function
was evaluated AFTER group by function(step 5-1 and 6) so it will NOT return
what we wanted since data is already grouped/aggregrated by the same
groupid/partition. 1. FROM 2. WHERE 3. GROUP BY 4. HAVING 5. SELECT 5-1.
Evaluate Expressions 5-2. Remove Duplicates 6. ORDER BY 7.
OFFSET-FETCH/TOP
upvoted 1 times

  Robintang0924 1 month, 3 weeks ago


With
above being said, if we really want to achieve the same result by window rani
function, then below SQL should work the same way like a groupby/max only query.
with top_city_date as ( Select CityID, AccountOpenedDate,RANK() OVER
(PARTITION BY CityID ORDER BY AccountOpenedDate desc) as DateRank from
Application.Cities join Sales.Customers ON CityID=PostalCityID) select
CityID,AccountOpenedDate from top_city_date where DateRank=1 order by
CityID;
upvoted 1 times

  Robintang0924 1 month, 3 weeks ago


After
2nd thought, Bartek is right and rank/dense_rank is required AFTER group by
function, since X axis is defined as 'The X axis contains the position that the
city occupies relative to other cities.' and it seems it returns rank number
instead of city id. Tazul already given correct data window function rank SQL
based on assumption that rank is required.
upvoted 1 times

Question #31 Topic 1


Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question on this series.
You have a database that tracks orders and deliveries for customers in North America. System versioning is enabled for all tables. The database
contains the
Sales.Customers, Application.Cities, and Sales.CustomerCategories tables.
Details for the Sales.Customers table are shown in the following table:

Details for the Application.Cities table are shown in the following table:

Details for the Sales.CustomerCategories table are shown in the following table:

You need to create a query that meets the following requirements:


✑ For customers that are not on a credit hold, return the CustomerID and the latest recorded population for the delivery city that is associated
with the customer.
✑ For customers that are on a credit hold, return the CustomerID and the latest recorded population for the postal city that is associated with the
customer.
Which two Transact-SQL queries will achieve the goal? Each correct answer presents a complete solution.

A.

B.

C.

D.

Correct Answer: A
Using Cross Joins -
A cross join that does not have a WHERE clause produces the Cartesian product of the tables involved in the join. The size of a Cartesian
product result set is the number of rows in the first table multiplied by the number of rows in the second table.
However, if a WHERE clause is added, the cross join behaves as an inner join.
B: You can use the IIF in the ON-statement.
IIF returns one of two values, depending on whether the Boolean expression evaluates to true or false in SQL Server.
References:
https://technet.microsoft.com/en-us/library/ms190690(v=sql.105).aspx https://msdn.microsoft.com/en-us/library/hh213574.aspx

  AshleyLiang 6 months, 2 weeks ago


It appears to me that B is also correct.
upvoted 4 times

  M4x 6 months, 1 week ago


You're Right.
The question ask: "Which TWO Transact-SQL queries will achieve the goal? Each
correct answer presents a complete solution." ==> A,B
upvoted 4 times

  Abhilash_KK 6 months, 1 week ago


B
is also correct
upvoted 3 times

  Tazul 5 months, 3 weeks ago


Answer:
A,B
upvoted 3 times

Question #32 Topic 1

Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question on this series.
You have a database that tracks orders and deliveries for customers in North America. System versioning is enabled for all tables. The database
contains the
Sales.Customers, Application.Cities, and Sales.CustomerCategories tables.
Details for the Sales.Customers table are shown in the following table:

Details for the Application.Cities table are shown in the following table:

Details for the Sales.CustomerCategories table are shown in the following table:

You discover an application bug that impacts customer data for records created on or after January 1, 2014. In order to fix the data impacted by
the bug, application programmers require a report that contains customer data as it existed on December 31, 2013.
You need to provide the query for the report.
Which Transact-SQL statement should you use?
A.

B.

C.

D.

E.

Correct Answer: D
The datetime datetype defines a date that is combined with a time of day with fractional seconds that is based on a 24-hour clock.
The DATEFROMPARTS function returns a date value for the specified year, month, and day.
Incorrect Answers:
A: ValidFrom should be less (<) than @sdate AND ValidTo should be greater (>) than @edate.
B: We should add a day with DATEADD, not subtract one day.
C: We cannot compare a date to an exact datetime.
References:
https://msdn.microsoft.com/en-us/library/ms187819.aspx

  safiullah 6 months ago


Correct answer is C, because you have system versioning
enabled for all the tables. FOR SYSTEM_TIME with AS OF option because the
question says, state AS OF @DATE.
https://docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables?view=sql-server-2017
upvoted 4 times

  M4x 5 months, 3 weeks ago


No. In AS OF
it compare also the TIME portion.
https://docs.microsoft.com/en-US/sql/relational-databases/tables/querying-data-in-a-system-versioned-temporal-table?view=sql-server-2017
upvoted 2 times

  Tazul 5 months, 3 weeks ago


Correct
answer: C
upvoted 3 times

  imran 4 months, 3 weeks ago


I have tested
it C SEEMS TO BE CORRECT
upvoted 2 times

  ChaosRedeemed 3 months, 2 weeks ago


Correct Answer is C A: incorrect because it specfies
ValidTo so any data that has not been changed since before that date will not be
included B: incorrect edate is set do the date before, should
dateadd(d,1,@sdate) but still has the same issue as answer A C: Correct (If you
are testing this yourself, be careful that you test AS OF @DATE, a day after you
create you temporal table. If you dont the date wil not be valid for that day as
the time portion is after the start of the day) D: incorrect there is no FOR
SYSTEM TIME, so no historical data E: incorrect, same issue as A, we set an
enddate so we will not include records with the edate set to '9999-12-31
23:59:59.9999999'
upvoted 2 times

  Robintang0924 1 month, 3 weeks ago


Agreed
with M4x, AS OF is actually comparing with datetime value as a specific point of
time. When we only provide date part of a DateTime variable, SQL server uses
'00:00:00.000' for time part. So @date will become 2013-12-31:00:00:00.000.
Then query will only return rows with SysStartTime <= 2013-12-31:00:00:00.000
and SysEndTime > 2013-12-31:00:00:00.000 which is not good enough. e.g.
records with SysStartTime =2013-12-31:00:00:01.000 and SysEndTime =
2013-12-31:00:00:02.000 obviously not in this AS OF window but still belonged to
date range of 2013-12-31. It seems like Answer A is the most correct answer if
ValidFrom date range comparison operator is <= instead of < because start
from 2013-12-31:00:00:00.000 until 2013-12-31:23:59:59.000 all belong to date of
2013-12-31. For more detailed link, please find below:
https://javarevisited.blogspot.com/2016/10/how-to-compare-date-in-sql-server-query.html?_sm_au_=iHVH5NTWPn4HMZrFBJ3vvK7RJCBJt
https://www.sqlservercentral.com/articles/querying-temporal-tables
upvoted 1 times

  Jiacheng 2 weeks, 6 days ago


no, it says
customer data as it existsed on 12.31.2013 means it should not be ended until
1.1.2014. As you said, if it is ended at 12-31-00:00:01, then, how could you say
it is still exists on 12-31? Just like you have 10 bucks in the morning ,and you
buy a steak at 12:00, After that, can you still say you have 10$? So validTo
should be >= @Edate
upvoted 1 times

Question #33 Topic 1

DRAG DROP -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question on this series.
You have a database that tracks orders and deliveries for customers in North America. System versioning is enabled for all tables. The database
contains the
Sales.Customers, Application.Cities, and Sales.CustomerCategories tables.
Details for the Sales.Customers table are shown in the following table:

Details for the Application.Cities table are shown in the following table:

Details for the Sales.CustomerCategories table are shown in the following table:
You are creating a report to measure the impact of advertising efforts that were designed to attract new customers. The report must show the
number of new customers per day for each customer category, but only if the number of new customers is greater than five.
You need to write the query to return data for the report.
How should you complete the Transact-SQL statement? To answer, drag the appropriate Transact-SQL segments to the correct locations. Each
Transact-SQL segment may be used once, more than once, or not at all. You may need to drag the split bar between panes or scroll to view
content.
Select and Place:

Correct Answer:

  exam_taker5 7 months, 1 week ago


I
believe the WHERE statement should actually be a HAVING statement, as it is
filtering based on groupings.
upvoted 14 times

  prakash101179 5 months, 2 weeks ago


yeah, It should be 'having' instead of
'where'.
upvoted 1 times

  BenAsare 4 months, 1 week ago


HAVING is the
correct answer. Filtering by group level
upvoted 2 times

  fabzo 3 months, 2 weeks ago


Correct,
Having is correct. Where comes before grouping and Having comes after
grouping
upvoted 1 times

  Robintang0924 1 month, 3 weeks ago


Fabzo
is correct, we have below SQL logical execution order so it should be having
after group by: 1. FROM 2. WHERE 3. GROUP BY 4. HAVING 5. SELECT 5-1. Evaluate
Expressions 5-2. Remove Duplicates 6. ORDER BY 7. OFFSET-FETCH/TOP
upvoted 1 times

Question #34 Topic 1

DRAG DROP -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question on this series.
You have a database that tracks orders and deliveries for customers in North America. System versioning is enabled for all tables. The database
contains the
Sales.Customers, Application.Cities, and Sales.CustomerCategories tables.
Details for the Sales.Customers table are shown in the following table:

Details for the Application.Cities table are shown in the following table:

Details for the Sales.CustomerCategories table are shown in the following table:

The marketing department is performing an analysis of how discount affect credit limits. They need to know the average credit limit per standard
discount percentage for customers whose standard discount percentage is between zero and four.
You need to create a query that returns the data for the analysis.
How should you complete the Transact-SQL statement? To answer, drag the appropriate Transact-SQL segments to the correct locations. Each
Transact-SQL segments may be used once, more than once, or not at all. You may need to drag the split bar between panes or scroll to view
content.
Select and Place:
Correct Answer:

Box 1: 0, 1, 2, 3, 4 -
Pivot example:
-- Pivot table with one rowand five columns
SELECT 'AverageCost' AS Cost_Sorted_By_Production_Days,
[0], [1], [2], [3], [4]

FROM -
(SELECT DaysToManufacture, StandardCost
FROM Production.Product) AS SourceTable

PIVOT -
(
AVG(StandardCost)
FOR DaysToManufacture IN ([0], [1], [2], [3], [4])
) AS PivotTable;
Box 2: [CreditLimit]

Box 3: PIVOT -
You can use the PIVOT and UNPIVOT relational operators to change a table-valued expression into another table. PIVOT rotates a table-valued
expression by turning the unique values from one column in the expression into multiple columns in the output, and performs aggregations
where they are required on any remaining column values that are wanted in the final output.

Box 4: 0, 1, 2, 3, 4 -
The IN clause determines whether a specified value matches any value in a subquery or a list.
Syntax: test_expression [ NOT ] IN ( subquery | expression [ ,...n ] )
Where expression[ ,... n ] is a list of expressions to test for a match. All expressions must be of the same type as test_expression.
References:
https://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx

  exam_taker5 7 months, 1 week ago


I
think it should be SELECT AVG(CreditLimit)
upvoted 1 times

  Dieter 6 months, 3 weeks ago


@Exam_taker5: The solution is correct since the Select
clause has to be the same as the IN whtin the PIVOT clause
upvoted 4 times

  Robintang0924 1 month, 3 weeks ago


Answer
is correct but column name as select result blank and in the in list blank
should surround with bracket like below since number(or start letter is number)
is irregular SQL server identifier. [0], [1], [2], [3], [4]
upvoted 2 times
Question #35 Topic 1

DRAG DROP -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question on this series.
You have a database that tracks orders and deliveries for customers in North America. System versioning is enabled for all tables. The database
contains the
Sales.Customers, Application.Cities, and Sales.CustomerCategories tables.
Details for the Sales.Customers table are shown in the following table:

Details for the Application.Cities table are shown in the following table:

Details for the Sales.CustomerCategories table are shown in the following table:

You are preparing a promotional mailing. The mailing must only be sent to customers in good standing that live in medium and large cities.
You need to write a query that returns all customers that are not on credit hold who live in cities with a population greater than 10,000.
How should you complete the Transact-SQL statement? To answer, drag the appropriate Transact-SQL segments to the correct locations. Each
Transact-SQL segment may be used once, more than once, or not at all. You may need to drag the split bar between panes or scroll to view
content.
Select and Place:
Correct Answer:

Box 1: IN (
The IN clause determines whether a specified value matches any value in a subquery or a list.
Syntax: test_expression [ NOT ] IN ( subquery | expression [ ,...n ] )
Where subquery is a subquery that has a result set of one column. This column must have the same data type as test_expression.

Box 2: WHERE -

Box 3: AND [IsOnCreditHold] = 0 -


Box 4: )
References:
https://msdn.microsoft.com/en-us/library/ms177682.aspx

  Dieter 6 months, 3 weeks ago


The ")" must
be defined before the AND clause since Cities do not have a Credithold-Column.
AND belongs to customer table
upvoted 9 times

  dragan 5 months, 2 weeks ago


Select
CustomerID from customers where postalCityID in (select citiyID from Cities
where LatestRecordedPopulation > 10000) and IsoncreditHold = 0
upvoted 8 times

  fabzo 5 months, 1 week ago


Missing open
brackets "("
upvoted 5 times

Question #36 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You have a table named Products that contains information about the products that your company sells. The table contains many columns that do
not always contain values.
You need to implement an ANSI standard method to convert the NULL values in the query output to the phrase "Not Applicable".
What should you implement?

A. the COALESCE function

B. a view

C. a table-valued function

D. the TRY_PARSE function

E. a stored procedure

F. the ISNULL function

G. a scalar function
H. the TRY_CONVERT function

Correct Answer: F
The ISNULL function replaces NULL with the specified replacement value.
References:
https://msdn.microsoft.com/en-us/library/ms184325.aspx

  Minh 9 months, 3 weeks ago


but ISNULL is
not a standard sql function
upvoted 7 times

  Karoljis 9 months ago


COALESCE is standard.
upvoted 8 times

  safiullah 6 months ago


Option A as COALESCE is the ANSI standard function.
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/coalesce-transact-sql?view=sql-server-2017
upvoted 7 times

  supermario 6 days, 9 hours ago


COALESCE
upvoted 1 times

Question #37 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You have a database that is denormalized. Users make frequent changes to data in a primary table.
You need to ensure that users cannot change the tables directly, and that changes made to the primary table also update any related tables.
What should you implement?

A. the COALESCE function

B. a view

C. a table-valued function

D. the TRY_PARSE function

E. a stored procedure

F. the ISNULL function

G. a scalar function

H. the TRY_CONVERT function

Correct Answer: B
Using an Indexed View would allow you to keep your base data in properly normalized tables and maintain data-integrity while giving you the
denormalized "view" of that data.
References:
http://stackoverflow.com/questions/4789091/updating-redundant-denormalized-data-automatically-in-sql-server

  Robintang0924 1 month, 3 weeks ago


There
is no correct answer listed. To maintain a set of denormalized tables, normally
we need an instead of trigger on primary table to interpret every
insert/update/delete operations on this table and make sure it will map to get
reflected to related redundant columns in other tables. I.e. an after trigger
on table is necessary and should be an answer/solution to this question.
Kindly note: For the solution mentioned in the stackoverflow link, an indexed
view is just used to bridge the gap for querying when there are denormalized
tables but it won't help when there are insert/update/delete happens on primary
table. Unless we go step further and create an instead of trigger on that
indexed view and encapsulate every details of underlying table from Application
logic for not only select but also I/U/D operations. Even in that case the
answer should be View and Trigger other than just a view which is not a complete
solution.
upvoted 1 times

Question #38 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You have a database that stores sales and order information.
Users must be able to extract information from the tables on an ad hoc basis. They must also be able to reference the extracted information as a
single table.
You need to implement a solution that allows users to retrieve the data required, based on variables defined at the time of the query.
What should you implement?

A. the COALESCE function

B. a view

C. a table-valued function

D. the TRY_PARSE function

E. a stored procedure

F. the ISNULL function

G. a scalar function

H. the TRY_CONVERT function

Correct Answer: C
User-defined functions that return a table data type can be powerful alternatives to views. These functions are referred to as table-valued
functions. A table-valued user-defined function can be used where table or view expressions are allowed in Transact-SQL queries. While views
are limited to a single SELECT statement, user-defined functions can contain additional statements that allow more powerful logic than is
possible in views.
A table-valued user-defined function can also replace stored procedures that return a single result set.
References:
https://technet.microsoft.com/en-us/library/ms191165(v=sql.105).aspx

Question #39 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You have a table named AuditTrail that tracks modifications to data in other tables. The AuditTrail table is updated by many processes. Data input
into AuditTrail may contain improperly formatted date time values. You implement a process that retrieves data from the various columns in
AuditTrail, but sometimes the process throws an error when it is unable to convert the data into valid date time values.
You need to convert the data into a valid date time value using the en-US format culture code. If the conversion fails, a null value must be returned
in the column output. The conversion process must not throw an error.
What should you implement?

A. the COALESCE function

B. a view
C. a table-valued function

D. the TRY_PARSE function

E. a stored procedure

F. the ISNULL function

G. a scalar function

H. the TRY_CONVERT function

Correct Answer: H
A TRY_CONVERT function returns a value cast to the specified data type if the cast succeeds; otherwise, returns null.
References:
https://msdn.microsoft.com/en-us/library/hh230993.aspx

  exam_taker5 7 months, 1 week ago


I
believe this should be TRY_PARSE, which is used specifically for date
conversion. It includes an input parameter for culture type.
upvoted 7 times

  Dieter 6 months, 3 weeks ago


Fully agree with exam_taker5
upvoted 2 times

  M4x 6 months ago


TRY_PARSE
accept a string_value AS data_type, since question do not specify the column
type I think TRY_CONVERT is a better answer.
upvoted 3 times

  Bartek 6 months ago


agree
with M4X
upvoted 1 times

  avramov 4 months, 1 week ago


try_parse must
be used as it is required 'using the en-US format culture code' and the
try_parse deals with the 'culture'
upvoted 1 times

  mlourinho 4 months ago


The requirement is "The conversion process must not
throw an error". "Try_Convert" throws an error when we try to perform a
conversion that is not explicitly permitted. On the other hand, "TRY_PARSE"
function can only convert strings to numeric or date data types. It seems to me
that the most probable answer is "TRY_PARSE".
upvoted 1 times

  tubis 3 months, 2 weeks ago


"Try_Convert"
does not throw an error when the conversion is not explicitly permitted. And
base on the reference book, it recommends using "Try_Convert" rather than
Try_Parse, even though the "Try_Convert" has lower performance
upvoted 1 times

  ivanbtod 1 month, 4 weeks ago


I think it
should be try_parse due to the hint 'using the en-US format culture
code'
upvoted 1 times

  Robintang0924 1 month, 3 weeks ago


agreed
with Exam_taker5 and Avramov, Try_Parse and Try_Convert both could take date
string input and return null if error happens, however question clearly asked
for 'culture code' which is specific to try_parse definition below. TRY_PARSE
( string_value AS data_type [ USING culture ] )
https://docs.microsoft.com/en-us/sql/t-sql/functions/try-parse-transact-sql?view=sql-server-ver15
upvoted 2 times
  gtc108 1 month, 1 week ago
Both
TRY_CONVERT and TRY_PARSE will work with this scenario however, there is an
overhead to using TRY_PARSE. Because of this, TRY_CONVERT is the best
solution:
https://docs.microsoft.com/en-us/sql/t-sql/functions/try-parse-transact-sql?view=sql-server-ver15,
upvoted 1 times

  matija1 1 week, 4 days ago


I think Try_CONVERT since it wants null if it fails,
TRY_PARSE will return error on failure to convert
upvoted 1 times

Question #40 Topic 1

HOTSPOT -
You have the following subqueries: Subquery1, Subquery2, and Subquery3.
You need to replace the three subqueries with named result sets or temporary tables. The following requirements must be met:

Which replacement techniques should you use? To answer, select the appropriate options in the answer area.
Hot Area:
Correct Answer:

Subquery1: common table expression (CTE)


A common table expression (CTE) can be thought of as a temporary result set that is defined within the execution scope of a single SELECT,
INSERT, UPDATE,
DELETE, or CREATE VIEW statement. A CTE is similar to a derived table in that it is not stored as an object and lasts only for the duration of the
query. Unlike a derived table, a CTE can be self-referencing and can be referenced multiple times in the same query.
Subquery2: global temporary table
Global temporary tables are visible to any user and any connection after they are created, and are deleted when all users that are referencing
the table disconnect from the instance of SQL Server.
Subquery3: local temporary table
Local temporary tables are visible only to their creators during the same connection to an instance of SQL Server as when the tables were first
created or referenced. Local temporary tables are deleted after the user disconnects from the instance of SQL Server.
References:
https://technet.microsoft.com/en-us/library/ms190766(v=sql.105).aspx https://technet.microsoft.com/en-us/library/ms186986.aspx

Question #41 Topic 1

You have a database that stored information about servers and application errors. The database contains the following tables.

Servers -

Errors -

You need to return all error log messages and the server where the error occurs most often.
Which Transact-SQL statement should you run?
A.

B.

C.

D.

Correct Answer: C

  AshleyLiang 6 months, 2 weeks ago


C returns all errors for all servers. A is fine except
that it will fail to return the entry when more than one server share the same
highest occurrence of an error / errors.
upvoted 3 times

  Tazul 5 months, 3 weeks ago


Agreed,
Occurances >= ALL will include both
upvoted 1 times

  Bartek 6 months ago


More A Than C: DROP TABLE #ERRORS CREATE TABLE #ERRORS (
ERRORID INT PRIMARY KEY, SERVERID INT, OCCURENCES INT, LOGMESSAGE NVARCHAR(MAX)
) INSERT INTO #ERRORS (ERRORID, SERVERID, OCCURENCES, LOGMESSAGE) VALUES (1,
1,3,'ERROR1'), (2,1,2,'ERROR2'), (3,1,10,'ERROR2'), (4,2,4,'ERROR2'),
(5,2,14,'ERROR2'), (6,2,24,'ERROR1'), (7,3,10,'ERROR3'), (8,3,24,'ERROR3')
SELECT DISTINCT SERVERID, LOGMESSAGE FROM #ERRORS AS E1 WHERE OCCURENCES >
ALL ( SELECT E2.OCCURENCES FROM #ERRORS AS E2 WHERE E2.LOGMESSAGE =
E1.LOGMESSAGE AND E2.SERVERID <> E1.SERVERID) SELECT DISTINCT SERVERID,
LOGMESSAGE FROM #ERRORS AS E1 WHERE LOGMESSAGE IN ( SELECT TOP 1 E2.LOGMESSAGE
FROM #ERRORS AS E2 WHERE E1.LOGMESSAGE = E2.LOGMESSAGE AND E1.SERVERID <>
E2.SERVERID ORDER BY OCCURENCES )
upvoted 6 times

  Robintang0924 1 month, 3 weeks ago


Frankly
speaking none of existing solution seems clear/complete to the questions.
Therefore come up with something new and try to make it look elegant. --kindly
note: since question only asked most occurrences so in case there are same max
occurrences for the same error message across different servers, I used serverid
as tiebreak. with MOST_OCCURRENCES as ( select SERVERID, LOGMESSAGE,
OCCURRENCES, ROW_NUMBER( ) over (PARTITION BY LOGMESSAGE order by OCCURRENCES,
SERVERID desc) as occurrences_rank from ERRORS ) select DNS, LOGMESSAGE from
MOST_OCCURRENCES mo join SERVERS sv on mo.SERVERID=sv.SERVERID where
occurrences_rank=1 order by OCCURRENCES desc;
upvoted 2 times

  AnsB 1 month, 1 week ago


Best to use
rank() rather than row_number(), also order by should not include
serverid.
upvoted 1 times
Question #42 Topic 1

DRAG DROP -
You have a database that stored information about servers and application errors. The database contains the following tables.

Servers -

Errors -

You are building a webpage that shows the three most common errors for each server.
You need to return the data for the webpage.
How should you complete the Transact-SQL statement? To answer, drag the appropriate Transact-SQL segments to the correct location. Each
Transact-SQL segment may be used once, more than once, or not at all. You may need to drag the split bar between panes or scroll to view
content.
NOTE: Each correct selection is worth one point.
Select and Place:

Correct Answer:

  Bartek 6 months ago


ORDER BY OCCURENCES DESC
upvoted 8 times
  Robintang0924 1 month, 3 weeks ago
Besides
Bartek mentioned 'desc' issue, this solution seems doesn't work since ServerID
exist in both tables and first reference without table name is ambiguous. where
ServerID=svr.ServerID
upvoted 1 times

Question #43 Topic 1

You have a database named MyDb. You run the following Transact-SQL statements:

A value of 1 in the IsActive column indicates that a user is active.


You need to create a count for active users in each role. If a role has no active users. You must display a zero as the active users count.
Which Transact-SQL statement should you run?

A.

B.

C.

D.

Correct Answer: C

  Dieter 6 months, 3 weeks ago


Any ideas for
an explanatio why you cannot use Count(UserID)?
upvoted 2 times

  AshleyLiang 6 months, 3 weeks ago


Actually we should use COUNT(U.UserID) as included in
option A. It fulfills the requirement that when no active user it returns a 0,
while COUNT(*) returns 1.
upvoted 7 times

  mikemike 6 months ago


explanation: COUNT(*) – Returns the total number of
records in a table (Including NULL valued records). COUNT(Column Name) – Returns
the total number of Non-NULL records
upvoted 4 times

  mattia_88 4 months, 3 weeks ago


the correct is
A. "If a role has no active users. You must display a zero as the active users
count" WITH COUNT(*) RETURN ALWAYS 1
upvoted 5 times
  mattia_88 4 months, 3 weeks ago
because the
record in table Roles is always present
upvoted 2 times

  fabzo 4 months, 1 week ago


How does C
return a 0 when a role has no active user?
upvoted 1 times

Question #44 Topic 1

SIMULATION -
You have a table named Cities that has the following two columns: CityID and CityName. The CityID column uses the int data type, and CityName
uses nvarchar
(max).
You have a table named RawSurvey. Each row includes an identifier for a question and the number of persons that responded to that question
from each of four cities. The table contains the following representative data:

A reporting table named SurveyReport has the following columns: CityID, QuestionID, and RawCount, where RawCount is the value from the
RawSurvey table.
You need to write a Transact-SQL query to meet the following requirements:
✑ Retrieve data from the RawSurvey table in the format of the SurveyReport table.
✑ The CityID must contain the CityID of the city that was surveyed.
✑ The order of cities in all SELECT queries must match the order in the RawSurvey table.
✑ The order of cities in all IN statements must match the order in the RawSurvey table.
Construct the query using the following guidelines:
✑ Use one-part names to reference tables and columns, except where not possible.
✑ ALL SELECT statements must specify columns.
✑ Do not use column or table aliases, except those provided.
Do not surround object names with square brackets.
Part of the correct Transact-SQL has been provided in the answer area below. Enter the code in the answer area that resolves the problem and
meets the stated goals or requirements. You can add code within the code that has been provided as well as below it.

Use the Check Syntax button to verify your work. Any syntax or spelling errors will be reported by line and character position.

Correct Answer: Please see explanation

UNPIVOT must be used to rotate columns of the Rawsurvey table into column values.
References:
https://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx

  raf77 6 months, 1 week ago


The correct
answer is: SELECT CityId, QuestionId, RawCount FROM RawSurvey AS t1 UNPIVOT
(RawCount FOR CityName IN ('Tokyo', 'Boston', 'London', 'NewYork')) AS t2 JOIN
Cities ON CityName = CityName;
upvoted 7 times

  Tazul 5 months, 2 weeks ago


----- IN
(Tokyo, Boston, London, [New York])
upvoted 3 times

  mlourinho 4 months ago


SELECT CityId, QuestionId, RawCount FROM #RawSurvey AS
t1 UNPIVOT (RawCount FOR CityName IN (Tokyo, Boston, London, [New York])) AS t2
JOIN #Cities C ON t2.CityName = C.CityName;
upvoted 2 times

  AnsB 1 month, 1 week ago


Tazul is
RIGHT. No quotation marks here for column names
upvoted 1 times

  mlourinho 4 months ago


SELECT CityId, QuestionId, RawCount FROM ( SELECT
QuestionId, Tokyo, Boston, London, [New York] FROM #RawSurvey ) AS t1 UNPIVOT (
RawCount FOR CityName IN (Tokyo, Boston, London, [New York]) ) AS t2 INNER JOIN
Cities ON t2.CityName = Cities.CityName
upvoted 2 times

  AnsB 1 month, 1 week ago


confirmed.
RIGHT
upvoted 1 times

  hgi 1 month, 3 weeks ago


my version
(not tested) select CityID, QuestionID, RawCount from (select QuestionID,
CityName, RawCount from Rawsurvey unpivot RawCount for CityName in (Tokyo,
Boston, London, [New York]) as t1) as t2 join Cities on Cities.CityName =
t2.CityName
upvoted 1 times

  DEBRA 4 weeks ago


select cityid, questionid, rawcount from (select
questionid, tokyo, etc)) as t1 unpivot( rawcount for cityname in(tokyo, etc) as
t2 join cities on t2.cityname = t1.cityname
upvoted 1 times

  Barbedx 2 weeks, 1 day ago


with Cities as ( select * from (values (1,'Tokyo'
), (2,'Boston' ), (3,'London' ), (4,'New York'))v(CityId,CityName))
,RawSurvey as ( select * from (values ('Q1',1, 42,48,51), ('Q2',22,39,58,42),
('Q3',29,41,61,33), ('Q4',62,70,60,50), ('Q5',63,31,41,21), ('Q6',32,1,
16,34))v(QuestionId, [Tokyo], [Boston], [London], [New York])) SELECT
CityID, questionId, rawCount from RawSurvey as t1 unpivot (rawCount for City in(
[Tokyo], [Boston], [London], [New York])) as t2 join Cities on CityName =
t2.City
upvoted 1 times

Question #45 Topic 1

DRAG DROP -
You create three tables by running the following Transact-SQL statements:

For reporting purposes, you need to find the active user count for each role, and the total active user count. The result must be ordered by active
user count of each role. You must use common table expressions (CTEs).
Which four Transact-SQL segments should you use to develop the solution? To answer, move the appropriate Transact-SQL segments from the list
of Transact-
SQL segments to the answer area and arrange them in the correct order.
Select and Place:

Correct Answer:

  safiullah 6 months, 4 weeks ago


"With
ActiveUsers" segment should be the first one followed by "RoleNCount" segment,
because "WITH" keyword is used to start the CTE definition which is then
followed by multiple CTE definitions with same "WITH" keyword separtaed by
"Commas". Also the "RoleSummary" segment should be the one wihout "ORDER BY"
clause because CTEs are not allowed to have "ORDER BY" clause without "TOP" or
"FETCH" caluses inside.
upvoted 11 times

Question #46 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You have a database that contains tables named Customer_CRMSystem and Customer_HRSystem. Both tables use the following structure:

The tables include the following records:

Customer_CRMSystem -

Customer_HRSystem -

Records that contain null values for CustomerCode can be uniquely identified by CustomerName.
You need to display a list of customers that do not appear in the Customer_HRSystem table.
Which Transact-SQL statement should you run?

A.

B.

C.

D.
E.

F.

G.

H.

Correct Answer: D
EXCEPT returns distinct rows from the left input query that aren't output by the right input query.
References:
https://msdn.microsoft.com/en-us/library/ms188055.aspx

Question #47 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You have a database that contains tables named Customer_CRMSystem and Customer_HRSystem. Both tables use the following structure:

The tables include the following records:

Customer_CRMSystem -

Customer_HRSystem -

Records that contain null values for CustomerCode can be uniquely identified by CustomerName.
You need to display customers who appear in both tables and have a proper CustomerCode.
Which Transact-SQL statement should you run?

A.

B.

C.

D.

E.

Correct Answer: A
When there are null values in the columns of the tables being joined, the null values do not match each other. The presence of null values in a
column from one of the tables being joined can be returned only by using an outer join (unless the WHERE clause excludes null values).
References:
https://technet.microsoft.com/en-us/library/ms190409(v=sql.105).aspx

  prakash101179 5 months, 2 weeks ago


I think correct answer is both A and B.
upvoted 2 times

  Bartek 5 months, 2 weeks ago


Just A "..and
have a proper CustomerCode." Intersect II keep NULL values
upvoted 9 times

  fabzo 3 months, 3 weeks ago


Both A and B
is incorrect man. The correct answer is "SELECT CustomerCode, CustomerName
FROM Customer_CRMSystem EXCEPT SELECT CustomerCode, CustomerName FROM
Customer_HRSystem"
upvoted 1 times

  Mag53 1 month, 2 weeks ago


A is correct.
B incorrect see comment Bartek. D isncorrect: The T-SQL EXCEPT operator, added
in SQL Server 2005, returns only distinct rows that appear in one set and not
the other. Specifically, EXCEPT returns rows from the input set listed first in
the query.
upvoted 1 times

  Shanuramasubbu 1 week, 4 days ago


I
checked it. Both A and B is correct answer
upvoted 1 times
Question #48 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You have a database that contains tables named Customer_CRMSystem and Customer_HRSystem. Both tables use the following structure:

The tables include the following records:

Customer_CRMSystem -

Customer_HRSystem -

Records that contain null values for CustomerCode can be uniquely identified by CustomerName.
You need to display a Cartesian product, combining both tables.
Which Transact-SQL statement should you run?

A.

B.

C.

D.

E.
F.

G.

H.

Correct Answer: G
A cross join that does not have a WHERE clause produces the Cartesian product of the tables involved in the join. The size of a Cartesian
product result set is the number of rows in the first table multiplied by the number of rows in the second table.
References:
https://technet.microsoft.com/en-us/library/ms190690(v=sql.105).aspx

Question #49 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You have a database that contains tables named Customer_CRMSystem and Customer_HRSystem. Both tables use the following structure:
The tables include the following records:

Customer_CRMSystem -

Customer_HRSystem -

Records that contain null values for CustomerCode can be uniquely identified by CustomerName.
You need to create a list of all unique customers that appear in either table.
Which Transact-SQL statement should you run?

A.
B.

C.

D.

E.

F.

G.

H.

Correct Answer: E
UNION combines the results of two or more queries into a single result set that includes all the rows that belong to all queries in the union. The
UNION operation is different from using joins that combine columns from two tables.
Incorrect Answers:
F: UNION ALL incorporates all rows into the results. This includes duplicates. If not specified, duplicate rows are removed.
References:
https://msdn.microsoft.com/en-us/library/ms180026.aspx

Question #50 Topic 1

DRAG DROP -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question in this series.
You are developing a database to track customer orders. The database contains the following tables: Sales.Customers, Sales.Orders, and
Sales.OrderLines. The following table describes the columns in Sales.Customers.
The following table describes the columns in Sales.Orders.

The following table describes the columns in Sales.OrderLines.

You need to create a function that accepts a CustomerID as a parameter and returns the following information:
✑ all customer information for the customer
the total number of orders for the customer

✑ the total price of all orders for the customer


✑ the average quantity of items per order
How should you complete the function definition? To answer, drag the appropriate Transact-SQL segment to the correct locations. Transact-SQL
segment may be used once, more than once, or not at all. You may need to drag the split bar between panes or scroll to view content.
Select and Place:
Correct Answer:

Box1: RETURNS TABLE -


The function should return the following information:
✑ all customer information for the customer
✑ the total number of orders for the customer
✑ the total price of all orders for the customer
✑ the average quantity of items per order

Box 2: COUNT -
The function should return the total number of orders for the customer.

Box 3: SUM -
The function should return the total price of all orders for the customer.

Box 3. AVG -
The function should return the average quantity of items per order.

Box 4: GROUP BY -
Need to use GROUP BY for the aggregate functions.
References:
https://msdn.microsoft.com/en-us/library/ms186755.aspx

Question #51 Topic 1

HOTSPOT -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question in this series.
You are developing a database to track customer orders. The database contains the following tables: Sales.Customers, Sales.Orders, and
Sales.OrderLines.
The following table describes the columns in Sales.Customers.
The following table describes the columns in Sales.Orders.

The following table describes the columns in Sales.OrderLines.

You need to create a database object that calculates the total price of an order including the sales tax. The database object must meet the
following requirements:
✑ Reduce the compilation cost of Transact-SQL code by caching the plans and reusing them for repeated execution.
✑ Return a value.
✑ Be callable from a SELECT statement.
How should you complete the Transact-SQL statements? To answer, select the appropriate Transact-SQL segments in the answer area.
Hot Area:
Correct Answer:

Box 1: FUNCTION -
To be able to return a value we should use a scalar function.
CREATE FUNCTION creates a user-defined function in SQL Server and Azure SQL Database. The return value can either be a scalar (single) value
or a table.
Box 2: RETURNS decimal(18,2)
Use the same data format as used in the UnitPrice column.

Box 3: BEGIN -
Transact-SQL Scalar Function Syntax include the BEGIN ..END construct.
CREATE [ OR ALTER ] FUNCTION [ schema_name. ] function_name
( [ { @parameter_name [ AS ][ type_schema_name. ] parameter_data_type
[ = default ] [ READONLY ] }
[ ,...n ]
]
)

RETURNSreturn_data_type -
[ WITH <function_option> [ ,...n ] ]
[ AS ]

BEGIN -
function_body

RETURN scalar_expression -

END -
[;]
Box 4: @OrderPrice * @CalculatedTaxRate
Calculate the price including tax.

Box 5: END -
Transact-SQL Scalar Function Syntax include theBEGIN ..END construct.
References:
https://msdn.microsoft.com/en-us/library/ms186755.aspx

Question #52 Topic 1

DRAG DROP -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question in this series.
You are developing a database to track customer orders. The database contains the following tables: Sales.Customers, Sales.Orders, and
Sales.OrderLines. The following table describes the columns in Sales.Customers.

The following table describes the columns in Sales.Orders.

The following table describes the columns in Sales.OrderLines.

You need to create a stored procedure that inserts data into the Customers table. The stored procedure must meet the following requirements:
✑ Data changes occur as a single unit of work.
Data modifications that are successful are committed and a value of 0 is returned to the calling procedure.

✑ Data modifications that are unsuccessful are rolled back. You must display a message that uses severity level 16 and a value of -1.
✑ The stored procedure uses a built-in scalar function to evaluate the current condition of data modifications.
✑ The entire unit of work is terminated and rolled back if a run-time error occurs during execution of the stored procedure.
How should complete the stored procedure definition? To answer, drag the appropriate Transact-SQL segments to the correct targets. Each
Transact-SQL segment may be used once, more than once, or not at all. You may need to drag the split bar between panes or scroll to view
content.
NOTE: Each correct selection is worth one point.
Select and Place:

Correct Answer:

Box 1: XACT_ABORT -
XACT_ABORT specifies whether SQL Server automatically rolls back the current transaction when a Transact-SQL statement raises a run-time
error.
When SET XACT_ABORT is ON, if a Transact-SQL statement raises a run-timeerror, the entire transaction is terminated and rolled back.

Box 2: COMMIT -
Commit the transaction.
Box 3: XACT_STATE -

Box 4: ROLLBACK -

Rollback the transaction -

Box 5: THROW -
THROW raises an exception and the severity is set to 16.
Requirement: Data modifications that are unsuccessful are rolled back. The exception severity level is set to 16 and a value of -1 is returned.
References:
https://msdn.microsoft.com/en-us/library/ms188792.aspx
https://msdn.microsoft.com/en-us/library/ee677615.aspx

  Abhilash_KK 6 months, 1 week ago


a
line terminator ; is required before THROW keyword, otherwise it will throw
syntax error
upvoted 4 times

  Barbedx 2 weeks, 1 day ago


there are need to be a @@Trancount, not
XACT_STATE
upvoted 1 times

  matija1 1 week, 4 days ago


No, different from 0 (<>) is XCAT_STATE while >
0 is @@Trancount
upvoted 1 times

Question #53 Topic 1

DRAG DROP -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question in this series.
You are developing a database to track customer orders. The database contains the following tables: Sales.Customers, Sales.Orders, and
Sales.OrderLines. The following table describes the columns in Sales.Customers.

The following table describes the columns in Sales.Orders.

The following table describes the columns in Sales.OrderLines.

You need to create a function that calculates the highest tax rate charged for an item in a specific order.
Which five Transact-SQL segments should you use to develop the solution? To answer, move the appropriate Transact-SQL segments from the list
of Transact-
SQL segments to the answer area and arrange them in the correct order.
Select and Place:

Correct Answer:

Box1: CREATE FUNCTION"¦@OrderID


Include definition for the "¦@OrderID parameter.
Box 2: RETURNS decimal(18,2)
The function is defined to return a scalar value.
Box 3: AS BEGIN "¦
Declare the local variables of the function.
Box 4: SET @CalculatedTaxRate = (..
Calculate the tax rate.
Box 5: RETURN @CalculatedRate END
Return a scalar value.
References:
https://msdn.microsoft.com/en-us/library/ms186755.aspx
  mlourinho 4 months ago
In the last script should be "RETURN @CalculatedTaxRate
END"
upvoted 3 times

  supermario 6 days, 7 hours ago


but how are we
supposed to write correct answers with these incorrect variables in
script.?
upvoted 1 times

Question #54 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You create a table by running the following Transact-SQL statement:

You need to audit all customer data.


Which Transact-SQL statement should you run?

A.

B.

C.

D.

E.

F.
G.

H.

Correct Answer: B
The FOR SYSTEM_TIME ALL clause returns all the row versions from both the Temporal and History table.
Note: A system-versioned temporal table defined through is a new type of user table in SQL Server 2016, here defined on the last line WITH
(SYSTEM_VERSIONING = ON"¦, is designed to keep a full history of data changes and allow easy point in time analysis.
To query temporal data, the SELECT statement FROM<table> clause has a new clause FOR SYSTEM_TIME with five temporal-specific sub-
clauses to query data across the current and history tables.
References:
https://msdn.microsoft.com/en-us/library/dn935015.aspx

Question #55 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You create a table by running the following Transact-SQL statement:

You need to return normalized data for all customers that were added in the year 2014.
Which Transact-SQL statement should you run?

A.

B.

C.

D.
E.

F.

G.

H.

Correct Answer: G
The following query searches for row versions for Employee row with EmployeeID = 1000 that were active at least for a portion of period
between 1st January of
2014 and 1st January 2015 (including the upper boundary):

SELECT * FROM Employee -

FOR SYSTEM_TIME -
BETWEEN '2014-01-01 00:00:00.0000000' AND '2015-01-01 00:00:00.0000000'
WHERE EmployeeID = 1000ORDER BY ValidFrom;
References:
https://msdn.microsoft.com/en-us/library/dn935015.aspx

  exam_taker5 7 months, 1 week ago


The
explanation does not fit the question... I believe the answer is G, but I'm not
positive.
upvoted 2 times

  exam_taker5 7 months, 1 week ago


**I
believe the answer is H
upvoted 4 times

  AshleyLiang 6 months, 2 weeks ago


Agree because normalized data is required
here.
upvoted 2 times

  M4x 6 months ago


You
are wrong! The field is datetime2 NOT date, '20141231' is expanded to
'2014-12-31 00:00:00.0000000' and you lost ALL records created between
00:00:00.0000001 and 23:59:59.9999999'
upvoted 5 times

  Tazul 5 months, 2 weeks ago


I think, H is
the closest answer. To be correct, we need to cast DateCreated column to Date.
Where cast(DateCreated as Date) Between '20140101' and '20141231'
upvoted 1 times

Question #56 Topic 1


Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You create a table by running the following Transact-SQL statement:

You are developing a report that displays customer information. The report must contain a grand total column.
You need to write a query that returns the data for the report.
Which Transact-SQL statement should you run?

A.

B.

C.

D.

E.

F.

G.

H.

Correct Answer: E
Calculate aggregate column through AVG function and GROUP BY clause.

  exam_taker5 7 months, 1 week ago


Should
be A. You can get grand totals using grouping sets.
upvoted 9 times
  Tazul 5 months, 2 weeks ago
It will fail,
because there is no aggregate function, and TaxIDNumber and DateCreated columns
are not included in the grouping sets.
upvoted 3 times

  dragan 5 months, 2 weeks ago


A is
correct.
upvoted 2 times

  Bahalzamon 3 months, 1 week ago


nothing in the
question says anything about 2014, that is from the previous question. it looks
like some of the answer options are in the incorrect spot, also it looks like A
is the correct answer. E also has no "GrandTotal" column
upvoted 1 times

Question #57 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You create a table named Customers. Data stored in the table must be exchanged between web pages and web servers by using AJAX calls that
use REST endpoint.
You need to return all customer information by using a data exchange format that is text-based and lightweight.
Which Transact-SQL statement should you run?

A.

B.

C.

D.

E.

F.
G.

H.

Correct Answer: C
JSON can be used to pass AJAX updates between the client and the server.
Export data from SQL Server as JSON, or format query results as JSON, by adding the FOR JSON clause to a SELECT statement.
When you use the FOR JSON clause, you can specify the structure of the output explicitly, or let the structure of the SELECT statement
determine the output.
References:
https://msdn.microsoft.com/en-us/library/dn921882.aspx

  Barbedx 2 weeks, 1 day ago


xml also possible answer
upvoted 1 times

Question #58 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You create a table by running the following Transact-SQL statement:

You are developing a report that aggregates customer data only for the year 2014. The report requires that the data be denormalized.
You need to return the data for the report.
Which Transact-SQL statement should you run?

A.

B.

C.
D.

E.

F.

G.

H.

Correct Answer: G

  AshleyLiang 6 months, 2 weeks ago


As denormalized data is required I'm not sure if G
contains that while D is not a valid pivot query.
upvoted 2 times

  M4x 6 months ago


I suppose that in this question Denormalize mean no
ValidFrom, ValidTo column on result
upvoted 1 times

  DEBRA 4 weeks ago


Answer is D
upvoted 1 times

Question #59 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You create a table by running the following Transact-SQL statement:

You need to develop a query that meets the following requirements:


✑ Output data by using a tree-like structure.
✑ Allow mixed content types.
✑ Use custom metadata attributes.
Which Transact-SQL statement should you run?

A.

B.

C.

D.

E.

F.

G.

H.

Correct Answer: F
In a FOR XML clause, you specify one of these modes: RAW, AUTO, EXPLICIT, and PATH.
✑ The EXPLICIT mode allows more control over the shape of the XML. You can mix attributes and elements at will in deciding the shape of the
XML. It requires a specific format for the resulting rowset that is generated because of query execution. This row set format is then mapped
into XML shape. The power of
EXPLICIT mode is to mix attributes and elements at will, create wrappers and nested complex properties, create space-separated values (for
example,
OrderID attribute may have a list of order ID values), and mixed contents.
✑ The PATH mode together with the nested FOR XML query capability provides the flexibility of the EXPLICIT mode in a simpler manner.
References:
https://msdn.microsoft.com/en-us/library/ms178107.aspx

Question #60 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
A database has two tables as shown in the following database diagram:
You need to list all provinces that have at least two large cities. A large city is defined as having a population of at least one million residents. The
query must return the following columns:
✑ tblProvince.ProvinceId
✑ tblProvince.ProvinceName
✑ a derived column named LargeCityCount that presents the total count of large cities for the province
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B
We need to list all provinces that have at least two large cities. There is no reference to this in the code.

Question #61 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
A database has two tables as shown in the following database diagram:

You need to list all provinces that have at least two large cities. A large city is defined as having a population of at least one million residents. The
query must return the following columns:
✑ tblProvince.ProvinceId
✑ tblProvince.ProvinceName
✑ a derived column named LargeCityCount that presents the total count of large cities for the province
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B
The SQL CROSS JOIN produces a result set which is the number of rowsin the first table multiplied by the number of rows in the second table if
no WHERE clause is used along with CROSS JOIN. This kind of result is called as Cartesian Product.
This is not what is required in this scenario.
References:
https://technet.microsoft.com/en-us/library/ms190690(v=sql.105).aspx

  fabzo 3 months, 3 weeks ago


But there is a
where clause
upvoted 1 times

  gripasha 1 month, 3 weeks ago


This is not
what is required in this scenario.
upvoted 1 times

Question #62 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
A database has two tables as shown in the following database diagram:

You need to list all provinces that have at least two large cities. A large city is defined as having a population of at least one million residents. The
query must return the following columns:
✑ tblProvince.ProvinceId
✑ tblProvince.ProvinceName
✑ a derived column named LargeCityCount that presents the total count of large cities for the province
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: A
The requirement to list all provinces that have at least two large cities is meet by the WHERE CitySummary.LargeCityCount >=2 clause.
CROSS APPLY willwork fine here.
Note:
The APPLY operator allows you to invoke a table-valued function for each row returned by an outer table expression of a query. The table-valued
function acts as the right input and the outer table expression acts as the left input. The right input is evaluated for each row from the left input
and the rows produced are combined for the final output. The list of columns produced by the APPLY operator is the set of columns in the left
input followed by the list of columns returned by the right input.
There are two forms of APPLY: CROSS APPLY and OUTER APPLY. CROSS APPLY returns only rows from the outer table that produce a result set
from the table-valued function. OUTER APPLY returns both rows that produce a result set, and rows that do not, with NULL values in the
columns produced by the table- valued function.
References:
https://technet.microsoft.com/en-us/library/ms175156(v=sql.105).aspx

Question #63 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database that tracks orders and deliveries for customers in North America. The database contains the following tables:

Sales.Customers -

Application.Cities -

Sales.CustomerCategories -
The company's development team is designing a customer directory application. The application must list customers by the area code of their
phone number. The area code is defined as the first three characters of the phone number.
The main page of the application will be based on an indexed view that contains the area and phone number for all customers.
You need to return the area code from the PhoneNumber field.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: A
The following indicates a correct solution:
✑ The function returns a nvarchar(10) value.
✑ Schemabinding is used.
✑ SELECT TOP 1 "¦ gives a single value
Note: nvarchar(max) is correct statement.
nvarchar [ ( n | max ) ]
Variable-length Unicode string data. n defines the string length and can be a value from 1 through 4,000. max indicates that the maximum
storage size is 2^31-1 bytes (2 GB).
References:
https://docs.microsoft.com/en-us/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql https://sqlstudies.com/2014/08/06/schemabinding-
what-why/

  Barbedx 2 weeks, 1 day ago


But there are can be more than 3 symbols, in
requierements says: The area code is defined as the first three characters of
the phone number. So, this is UNCORRECT
upvoted 1 times

Question #64 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database that includes the tables shown in the exhibit (Click the Exhibit button.)
You need to create a Transact-SQL query that returns the following information:
✑ the customer number
✑ the customer contact name
✑ the date the order was placed, with a name of DateofOrder
✑ a column named Salesperson, formatted with the employee first name, a space, and the employee last name
✑ orders for customers where the employee identifier equals 4
The output must be sorted by order date, with the newest orders first.
The solution must return only the most recent order for each customer.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B
We should use a WHERE clause, not a HAVING clause. The HAVING clause would refer to aggregate data.

  exam_taker5 7 months, 1 week ago


Why
is it an issue that HAVING refers to aggregate data? Wouldn't it still
accomplish the goal?
upvoted 1 times

  AshleyLiang 6 months, 2 weeks ago


Yes. The HAVING clause here is equivalent to WHERE as a
filter.
upvoted 1 times

  M4x 6 months ago


WHERE
clause is evaluated before the GROUP BY, consequently is more efficient and
logical correct than the HAVING
upvoted 3 times

  Abhilash_KK 6 months ago


Alias
name DateOfOrder cannot be used for order clause
upvoted 1 times

  M4x 6 months ago


Why not ? Try...
upvoted 3 times
  Tr4ckz 5 months ago
Order by is the only section that can use aliases
defined in the SELECT part, as of all 6 parts, SELECT is processed 5th and ORDER
by 6th and last
upvoted 2 times

  Almosawi 5 months ago


ORDDER BY clause is logically executed after SELECT
clause which has ALIAS.
upvoted 1 times

  avramov 3 months, 4 weeks ago


YES, because
you can use empid in Having if it is in the Group by clause i. e. having can
contain aggregates and columns being used in Group by
upvoted 3 times

  moehijawe 2 months, 1 week ago


The answer is
yes, having is applied on aggregate data (means after grouping data) and can be
apply on group by column
upvoted 2 times

Question #65 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database that includes the tables shown in the exhibit (Click the Exhibit button.)

You need to create a Transact-SQL query that returns the following information:
✑ the customer number
✑ the customer contact name
✑ the date the order was placed, with a name of DateofOrder
✑ a column named Salesperson, formatted with the employee first name, a space, and the employee last name
✑ orders for customers where the employee identifier equals 4
The output must be sorted by order date, with the newest orders first.
The solution must return only the most recent order for each customer.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes
B. No

Correct Answer: A
The MAX(orderdate) in the SELECT statement makes sure we return only the most recent order.
AWHERE o.empiD =4 clause is correctly used.
GROUP BY is also required.

Question #66 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database that includes the tables shown in the exhibit (Click the Exhibit button.)

You need to create a Transact-SQL query that returns the following information:
✑ the customer number
✑ the customer contact name
✑ the date the order was placed, with a name of DateofOrder
✑ a column named Salesperson, formatted with the employee first name, a space, and the employee last name
✑ orders for customers where the employee identifier equals 4
The output must be sorted by order date, with the newest orders first.
The solution must return only the most recent order for each customer.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B
We need a GROUP BY statement as we want to return an order for each customer.

Question #67 Topic 1


DRAG DROP -
You have two tables named UserLogin and Employee respectively.
You need to create a Transact-SQL script that meets the following requirements:
✑ The script must update the value of the IsDeleted column for the UserLogin table to 1 if the value of the Id column for the UserLogin table is
equal to 1.
✑ The script must update the value of the IsDeleted column of the Employee table to 1 if the value of the Id column is equal to 1 for the Employee
table when an update to the UserLogin table throws an error.
✑ The error message "No tables updated!" must be produced when an update to the Employee table throws an error.
Which five Transact-SQL segments should you use to develop the solution? To answer, move the appropriate Transact-SQL segments from the list
of Transact-
SQL segments to the answer area and arrange them in the correct order.
Select and Place:

Correct Answer:
Question #68 Topic 1

You need to create a table named MiscellaneousPayment that meets the following requirements:

Which Transact-SQL statement should you run?

A.

B.

C.

D.

E.

F.

Correct Answer: D
Incorrect Answers:
A: For column Reason we must use nvarchar, not varchar, as multilingual values must be supported. NEWSEQUENTIALID cannot be referenced
in queries. In addition, the money datatype uses rounding and will result in rounding errors.
B: We cannot use INT for the Id column as new values must be automatically generated.
C: For column Reason we must use nvarchar, not varchar, as multilingual values must be supported.
E: NEWSEQUENTIALID cannot be referenced in queries.
F: The money datatype uses rounding and will result in rounding errors. We should use decimal instead.
Note: Nvarchar stores UNICODE data. If you have requirements to store UNICODE or multilingual data, nvarchar is the choice. Varchar stores
ASCII data and should be your data type of choice for normal use.
References:
https://docs.microsoft.com/en-us/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql

  M4x 6 months ago


E is the correct answer because newsequentialid is more
faster that newid.
https://docs.microsoft.com/en-US/sql/t-sql/functions/newsequentialid-transact-sql?view=sql-server-2017
upvoted 1 times

  Bartek 6 months ago


Its no about performance. Its about generating unique
key for primary key of table. Newid() is generationg unique surrogate keys and
newsequentialid() is generationg nonsequentialid surrogate keys
upvoted 3 times

  Bartek 6 months ago


So correct is still answer D :)
upvoted 3 times

  Joce_IT 3 months, 2 weeks ago


E could be a
correct answer as well. OK, we can read that NEWSEQUENTIALID cannot be
referenced in queries. For example at page
https://docs.microsoft.com/en-us/sql/t-sql/functions/newsequentialid-transact-sql?view=sql-server-ver15.
But it is for a query like: SELECT NEWSEQUENTIALID(); We can also read
"NEWSEQUENTIALID() can only be used with DEFAULT constraints on table columns of
type uniqueidentifier". It is what I have done in a database. And the query
SELECT [Id],[Reason],[Amount] FROM [dbo].[MiscellaneousPayment] works
perfectly.
upvoted 1 times

Question #69 Topic 1

SIMULATION -
You have a database that contains the following tables.

You need to create a query that returns each complaint, the names of the employees handling the complaint, and the notes on each interaction.
The Complaint field must be displayed first, followed by the employee's name and the notes. Complaints must be returned even if no interaction
has occurred.
Construct the query using the following guidelines:
✑ Use two-part column names.
✑ Use one-part table names.
✑ Use the first letter of the table name as its alias.
✑ Do not Transact-SQL functions.
✑ Do not use implicit joins.
✑ Do not surround object names with square brackets.
Part of the correct Transact-SQL has been provided in the answer area below. Enter the code in the answer area that resolves the problem and
meets the stated goals or requirements. You can add code within the code that has been provided as well as below it.
1 SELECT c.Complaint, e.Name, i.Notes
2 FROM Complaints c
3 JOIN __________________
4 JOIN __________________
Correct Answer: Please see explanation
1 SELECT c.Complaint, e.Name, i.Notes
2 FROM Complaints c
3 JOIN Interactions i ON c.ComplaintID = i.ComplaintID
4 JOIN Employees e ON i.EmployeeID = E.EmployeeID

  Dieter 6 months, 3 weeks ago


first JOIN
=> LEFT OUTER JOIN ("show all complaints...") second JOIN => INNER
JOIN
upvoted 11 times

  avramov 3 months, 4 weeks ago


no, if you use
first left join, then inner join, you will not fulfill the requirements. you
need to use two left joins or one left join with a subquery
upvoted 3 times

  moehijawe 2 months, 1 week ago


select
c.complaint,e.name,i.notes from compliants as c left outer join interactions as
i on(c.compliantId = i.complaintId) left out join employees as e on
(i.employeeid = e.employeeId)
upvoted 2 times

  supermario 6 days, 6 hours ago


SELECT
c.Complaint, e.Name, i.Notes FROM Complaints c LEFT OUTER JOIN Interactions i ON
c.ComplaintID = i.ComplaintID LEFT OUTER JOIN Employees e ON i.EmployeeID =
e.EmployeeID
upvoted 1 times

Question #70 Topic 1

SIMULATION -
You create a table named Products.Sales by running the following Transact-SQL statement:

You add the following data to the table.


You are developing a report to display monthly sales data.
You need to create a Transact-SQL query to meet the following requirements:
✑ Retrieve a column for the year followed by a column for each month from January through December.
✑ Include the total sales amount for each month.
Aggregate columns by year, month, and then amount.

Construct the query using the following guidelines:


✑ Use the MONTH keyword as the interval when using the DATANAME function.
✑ Do not modify the provided IN clause.
✑ Do not surround object names with square brackets.
✑ Do not use implicit joins.
✑ Do not use the DATEPART function.
Part of the correct Transact-SQL has been provided in the answer area below. Enter the code in the answer area that resolves the problem and
meets the stated goals or requirements. You can add code within the code that has been provided as well as below it.
1. SELECT * FROM
2. (SELECT YEAR(SalesData)) AS Year, DATENAME (MONTH, SalesDate) AS Month, SalesAmount AS Amount
3.
4. ) AS MonthlySalesData
5.
6. FOR Month IN (January, February, March, April, May, June, July, August, September, October, November, December))

AS MonthNamePivot -

Correct Answer: Please see explanation


1 SELECT * FROM
2 (SELECT YEAR(SalesData)) AS Year, DATENAME (MONTH, SalesDate) AS Month, SUM(SalesAmount) AS Amount
3 FROM Products.Sales GROUP BY Year, Month
4 ) AS MonthlySalesData
5 PIVOT SUM(Amount)
6 FOR Month IN (January, February, March, April, May, June, July, August, September, October, November, December))

AS MonthNamePivot -
Note:
Line 2: Add SUM( ) around SalesAmount
Line 3: Add: FROM Products.Sales GROUP BY Year, Month
Line 5: Add: PIVOT SUM(Amount)

  Dieter 6 months, 3 weeks ago


GROUP BY Year,
Month => will not work since GROUP BY is executed before Select statement
=> syntax erro. better: GROUP BY Year(SalesDate), Month(SalesDate)
upvoted 4 times

  AshleyLiang 6 months, 2 weeks ago


Good point.
upvoted 1 times

  M4x 6 months ago


Better
use DATENAME same function of SELECT. GROUP BY YEAR(SalesData), DATENAME(MONTH,
SalesDate)
upvoted 1 times

  Tazul 5 months, 1 week ago


SELECT * FROM
(SELECT YEAR(SalesDate) AS Year, DATENAME(MONTH, SalesDate) AS Month,
SalesAmount AS Amount from Products.sales ) AS MonthlySalesData PIVOT
(Sum(Amount) FOR Month IN (January, February, March, April, May, June, July,
August, September, October, November, December)) AS MonthNamePivot
upvoted 6 times

  moehijawe 2 months, 1 week ago


SELECT * FROM
(SELECT YEAR(SalesData)) AS Year, DATENAME (MONTH, SalesDate) AS Month,
SalesAmount AS Amount FROM Products.Sales) AS MonthlySalesData PIVOT
(SUM(Amount) FOR Month IN (January, February, March, April, May, June, July,
August, September, October, November, December)) as AS
PivotMonthlySalesData
upvoted 4 times

  moehijawe 2 months ago


SELECT * FROM (SELECT YEAR(SalesData)) AS Year, DATENAME
(MONTH, SalesDate) AS Month, SalesAmount AS Amount from Products.Sales) AS
MonthlySalesData pivot (sum(Amount) FOR Month IN (January, February, March,
April, May, June, July, August, September, October, November, December)) AS
MonthNamePivot
upvoted 1 times

  Barbedx 2 weeks ago


Everyone forgive about Total? SELECT * FROM (SELECT
YEAR(salesDate) AS Year, DATENAME (MONTH, SalesDate) AS Month, SalesAmount AS
Amount From sales UNION ALL select 'Total',DATENAME (MONTH, SalesDate) AS Month,
SalesAmount AS Amount From sales ) AS MonthlySalesData PIVOT ( SUM(Amount)
FOR Month IN (January, February, March, April, May, June, July, August,
September, October, November, December)) as MonthNamePivot
upvoted 1 times

Question #71 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
Multiple processes use the data from a table named Sales and place it in other databases across the organization. Some of the processes are not
completely aware of the data types in the Sales table. This leads to data type conversion errors.
You need to implement a method that returns a NULL value id data conversion fails instead of throwing an error.
What should you implement?

A. the COALESCE function

B. a view

C. a table-valued function

D. the TRY_PARSE function

E. a stored procedure

F. the ISNULL function

G. a scalar function

H. the TRY_CONVERT function

Correct Answer: H
TRY_CONVERT returns a value cast to the specified data type if the cast succeeds; otherwise, returns null.
References:
https://docs.microsoft.com/en-us/sql/t-sql/functions/try-convert-transact-sql

  Joce_IT 3 months, 2 weeks ago


Answer D with
the TRY_PARSE function could not fit in this question. For example at page
https://docs.microsoft.com/en-us/sql/t-sql/functions/try-parse-transact-sql?view=sql-server-ver15,
we can read: "Use TRY_PARSE only for converting from string to date/time and
number types." As the data types are not always known, the only possible answer
is the one with the TRY_CONVERT function, which is H.
upvoted 3 times
Question #72 Topic 1

You have a database that contains the following tables:

You need to write a query that returns a list of all customers who have not placed orders.
Which Transact-SQL statement should you run?

A. SELECT c.custid FROM Sales.Customers c INNER JOIN Sales.Order o ON c.custid = o.custid

B. SELECT custid FROM Sales.Customers INTERSECT SELECT custid FROM Sales.Orders

C. SELECT c.custid FROM Sales.Customers c LEFT OUTER Sales.Order o ON c.custid = o.custid

D. SELECT c.custid FROM Sales.Customers c LEFT OUTER JOIN Sales.Order o ON c.custid = o.custid WHERE orderid IS NULL

E. SELECT custid FROM Sales.Customers UNION ALL SELECT custid FROM Sales.Orders

F. SELECT custid FROM Sales.Customers UNION SELECT custid FROM Sales.Orders

G. SELECT c.custid FROM Sales.Customers c RIGHT OUTER JOIN Sales.Orders o ON c.custid = o.custid

Correct Answer: D
Inner joins return rows only when there is at least one row from both tables that matches the join condition. Inner joins eliminate the rows that
do not match with a row from the other table. Outer joins, however, return all rows from at least one of the tables or views mentioned in the
FROM clause, as long as those rows meet any WHERE or HAVING search conditions. All rows are retrieved from the left table referenced with a
left outer join, and all rows from the right table referenced in a right outer join. All rows from both tables are returned in a full outer join.
References:
https://technet.microsoft.com/en-us/library/ms187518(v=sql.105).aspx

Question #73 Topic 1

DRAG DROP -
You have a database that contains the following tables:

A delivery person enters an incorrect value for the CustomerID column in the Invoices table and enters the following text in the
ConfirmedReceivedBy column: "Package signed for by the owner Tim."
You need to find the records in the Invoices table that contain the word Tim in the CustomerName field along with the incorrectly entered row from
the
Sales.Invoice table.
How should you complete the Transact-SQL statement? To answer, drag the appropriate Transact-SQL segments to the correct locations. Each
Transact-SQL segment may be used once, more than once, or not at all. You may need to drag the split bar between panes or scroll to view
content.
NOTE: Each correct selection is worth one point.
Select and Place:

Correct Answer:

Box 1:SELECT CustomerID FROM Sales.Invoices


Box 2:INNER JOIN Sales.Customers.CustomerID = Sales.Invoices.CustomerID
Box 3:WHERE CustomerName LIKE '%tim%'
Box 4:WHERE ConfirmedReceiveBy IN (SELECT CustomerName FROM Sales.Customers)

  jmllopes 7 months, 2 weeks ago


A SELECT with
three WHERE? Since when sql accepts that syntax?
upvoted 5 times

  exam_taker5 7 months, 1 week ago


The
join needs to be a full outer join because the ID was entered incorrectly. It
may not have a match between tables.
upvoted 1 times

  M4x 6 months ago


Read
carefully the question: "You need to find the records in the __Invoices__ (__I
think Customers__) table that contain the word Tim in the CustomerName field
along with the incorrectly entered row from the Sales.Invoice table." No answer
fill all box with JOIN, the only winning move is select customerid from
sales.customers where customername like '%tim%' union select customerid from
sales.invoices where confirmedreceivedby like '%tim%' No-Sense but this is the
only answer
upvoted 12 times

  Bartek 6 months ago


agree with You in 100%
upvoted 1 times

  Bartek 6 months ago


Btw. Its difficult exercise
upvoted 1 times

  anonimdom 2 months, 3 weeks ago


why union all
can't be an option too? (e.g. if we want to see duplicates)
upvoted 2 times

  Barbedx 2 weeks ago


I think this Union because we need to see only incorrect
customers from sales.Invoices, So, if there are more then one rows with "tim",
it will shows it, if we make union and remove all duplicates its be easy to
find what happens.
upvoted 1 times

  ajitpatil 1 week, 5 days ago


This is correct.
upvoted 1 times

  dragan 5 months, 2 weeks ago


select
Invoices.customerID from Invoices Inner join customers on customers.customerID =
Invoices.customerID where CustomerName like ‘%tim%’
upvoted 1 times

  mlourinho 3 months, 4 weeks ago


It cannot be
join by CustomerId field, because in the question it says: "A delivery person
enters an incorrect value for the CustomerID column in the Invoices
table"
upvoted 2 times

  raja1234567890 4 months ago


This
should be full outer join. Customer Name condition will not work as customer can
be different person but package signed will be different. We need to add where
condition as" where confirmedreceivedby like '%tim%' and
sales.invoices.customerId is not null and sales.customers.customerId is
null
upvoted 1 times

  BenAsare 3 months, 3 weeks ago


That solution
provided is absolutely incorrect! M4X solution is the correct answer!
upvoted 1 times

  supermario 6 days, 6 hours ago


:-) M4X is the
right one. multiple where clause. Might be the exam accepts such syntax
LoL
upvoted 1 times

Question #74 Topic 1

DRAG DROP -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question in this series.

Start of repeated scenario -


You have a database that contains the tables shown in the exhibit. (Click the Exhibit button.)

You review the Employee table and make the following observations:
✑ Every record has a value in the ManagerID except for the Chief Executive Officer (CEO).
✑ The FirstName and MiddleName columns contain null values for some records.
✑ The valid values for the Title column are Sales Representative manager, and CEO.
You review the SalesSummary table and make the following observations:
✑ The ProductCode column contains two parts: The first five digits represent a product code, and the last seven digits represent the unit price.
The unit price uses the following pattern: ####.##.
✑ You observe that for many records, the unit price portion of the ProductCode column contains values.
✑ The RegionCode column contains NULL for some records.
✑ Sales data is only recorded for sales representatives.
You are developing a series of reports and procedures to support the business. Details for each report or procedure follow.
Sales Summary report: This report aggregates data by year and quarter. The report must resemble the following table.

Sales Manager report: This report lists each sales manager and the total sales amount for all employees that report to the sales manager.
Sales by Region report: This report lists the total sales amount by employee and by region. The report must include the following columns:
EmployeeCode,
MiddleName, LastName, RegionCode, and SalesAmount. If MiddleName is NULL, FirstName must be displayed. If both FirstName and
MiddleName have null values, the world Unknown must be displayed/ If RegionCode is NULL, the word Unknown must be displayed.
Report1: This report joins data from SalesSummary with the Employee table and other tables. You plan to create an object to support Report1. The
object has the following requirements:
✑ be joinable with the SELECT statement that supplies data for the report
✑ can be used multiple times with the SELECT statement for the report
✑ be usable only with the SELECT statement for the report
✑ not be saved as a permanent object
Report2: This report joins data from SalesSummary with the Employee table and other tables.
You plan to create an object to support Report1. The object has the following requirements: be joinable with the SELECT statement that supplies
data for the report
✑ can be used multiple times for this report and other reports
✑ accept parameters
✑ be saved as a permanent object
Sales Hierarchy report: This report aggregates rows, creates subtotal rows, and super-aggregates rows over the SalesAmount column in a single
result-set. The report uses SaleYear, SaleQuarter, and SaleMonth as a hierarchy. The result set must not contain a grand total or cross-tabulation
aggregate rows.
Current Price Stored Procedure: This stored procedure must return the unit price for a product when a product code is supplied. The unit price
must include a dollar sign at the beginning. In addition, the unit price must contain a comma every three digits to the left of the decimal point, and
must display two digits to the left of the decimal point. The stored procedure must not throw errors, even if the product code contains invalid data.

End of Repeated Scenario -


You need to create a query to return the data for the Sales Summary report.
Which three Transact-SQL segments should you use to develop the solution? To answer, move the appropriate Transact-SQL segments from the
list of Transact-
SQL segments to the answer area and arrange them in the correct order.
Select and Place:
Correct Answer:

Use two CTE expressions, one for salesYear and one for SalesQuarter, and combine them with a SELECT statement.
Note: A common table expression (CTE) can be thought of as a temporary result set that is defined within the execution scope of a single
SELECT, INSERT,
UPDATE, DELETE, or CREATE VIEW statement. A CTE is similar to a derived table in that it is not stored as an object and lasts only for the
duration of the query.
References:
https://technet.microsoft.com/en-us/library/ms190766(v=sql.105).aspx

  Abhilash_KK 6 months ago


I
believe salesyear_Cte should have only Group By SalesYear
upvoted 6 times

  M4x 6 months ago


Correct. Test on my SQL Server.
upvoted 1 times

  M4x 6 months ago


Sorry, my answer is ambiguous. The @Abhilash_KK solution
is correct the salesyear_Cte Group By SalesYear
upvoted 1 times

  fe 3 months ago
QuarterSalesAmount is not in the GROUP BY clause, so it
is invalid in the SELECT of the first CTE.
upvoted 2 times

  Barbedx 2 weeks ago


in this case this a only alias for 0 constant, so its
available for this cte.
upvoted 1 times

  AnsB 1 month, 1 week ago


WITH
SalesYear_cte(salesYear,YearSalesAmount) AS( SELECT Salesyear, Sum(salesAmount)
YearSalesAmount FROM #SalesSummary GROUP BY salesyear ), this should be chosen,
tested on sql server
upvoted 4 times

Question #75 Topic 1

HOTSPOT -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question in this series.

Start of repeated scenario -


You have a database that contains the tables shown in the exhibit. (Click the Exhibit button.)

You review the Employee table and make the following observations:
✑ Every record has a value in the ManagerID except for the Chief Executive Officer (CEO).
✑ The FirstName and MiddleName columns contain null values for some records.
✑ The valid values for the Title column are Sales Representative manager, and CEO.
You review the SalesSummary table and make the following observations:
✑ The ProductCode column contains two parts: The first five digits represent a product code, and the last seven digits represent the unit price.
The unit price uses the following pattern: ####.##.
✑ You observe that for many records, the unit price portion of the ProductCode column contains values.
✑ The RegionCode column contains NULL for some records.
✑ Sales data is only recorded for sales representatives.
You are developing a series of reports and procedures to support the business. Details for each report or procedure follow.
Sales Summary report: This report aggregates data by year and quarter. The report must resemble the following table.

Sales Manager report: This report lists each sales manager and the total sales amount for all employees that report to the sales manager.
Sales by Region report: This report lists the total sales amount by employee and by region. The report must include the following columns:
EmployeeCode,
MiddleName, LastName, RegionCode, and SalesAmount. If MiddleName is NULL, FirstName must be displayed. If both FirstName and
MiddleName have null values, the world Unknown must be displayed/ If RegionCode is NULL, the word Unknown must be displayed.
Report1: This report joins data from SalesSummary with the Employee table and other tables. You plan to create an object to support Report1. The
object has the following requirements:
✑ be joinable with the SELECT statement that supplies data for the report
✑ can be used multiple times with the SELECT statement for the report
✑ be usable only with the SELECT statement for the report
✑ not be saved as a permanent object
Report2: This report joins data from SalesSummary with the Employee table and other tables.
You plan to create an object to support Report1. The object has the following requirements:
✑ be joinable with the SELECT statement that supplies data for the report
✑ can be used multiple times for this report and other reports
✑ accept parameters
✑ be saved as a permanent object
Sales Hierarchy report: This report aggregates rows, creates subtotal rows, and super-aggregates rows over the SalesAmount column in a single
result-set. The report uses SaleYear, SaleQuarter, and SaleMonth as a hierarchy. The result set must not contain a grand total or cross-tabulation
aggregate rows.
Current Price Stored Procedure: This stored procedure must return the unit price for a product when a product code is supplied. The unit price
must include a dollar sign at the beginning. In addition, the unit price must contain a comma every three digits to the left of the decimal point, and
must display two digits to the left of the decimal point. The stored procedure must not throw errors, even if the product code contains invalid data.

End of Repeated Scenario -


You need to create the query for the Sales by Region report.
Which function should you apply to each column? To answer, select the appropriate options in the answer area.
Hot Area:

Correct Answer:

Box 1: COALESCE -
COALESCE evaluates the arguments in order and returns the current value of the first expression that initially does not evaluate to NULL.
If MiddleName is NULL, FirstName must be displayed. If both FirstName and MiddleName have null values, the world Unknown must be
displayed.
The following example shows how COALESCE selects the data from the first column that has a nonnull value.
SELECT Name, Class, Color, ProductNumber,
COALESCE(Class, Color, ProductNumber) AS FirstNotNull
FROM Production.Product;
Not NULLIF: NULLIF returns the first expression if the two expressions are not equal. If the expressions are equal, NULLIF returns a null value of
the type of the first expression.

Box 2: COALESCE -
If RegionCodeis NULL, the word Unknown must be displayed.
References:
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/coalesce-transact-sql
Question #76 Topic 1

DRAG DROP -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question in this series.

Start of repeated scenario -


You have a database that contains the tables shown in the exhibit. (Click the Exhibit button.)

You review the Employee table and make the following observations:
✑ Every record has a value in the ManagerID except for the Chief Executive Officer (CEO).
✑ The FirstName and MiddleName columns contain null values for some records.
✑ The valid values for the Title column are Sales Representative manager, and CEO.
You review the SalesSummary table and make the following observations:
✑ The ProductCode column contains two parts: The first five digits represent a product code, and the last seven digits represent the unit price.
The unit price uses the following pattern: ####.##.
✑ You observe that for many records, the unit price portion of the ProductCode column contains values.
The RegionCode column contains NULL for some records.

✑ Sales data is only recorded for sales representatives.


You are developing a series of reports and procedures to support the business. Details for each report or procedure follow.
Sales Summary report: This report aggregates data by year and quarter. The report must resemble the following table.

Sales Manager report: This report lists each sales manager and the total sales amount for all employees that report to the sales manager.
Sales by Region report: This report lists the total sales amount by employee and by region. The report must include the following columns:
EmployeeCode,
MiddleName, LastName, RegionCode, and SalesAmount. If MiddleName is NULL, FirstName must be displayed. If both FirstName and
MiddleName have null values, the world Unknown must be displayed/ If RegionCode is NULL, the word Unknown must be displayed.
Report1: This report joins data from SalesSummary with the Employee table and other tables. You plan to create an object to support Report1. The
object has the following requirements:
✑ be joinable with the SELECT statement that supplies data for the report
✑ can be used multiple times with the SELECT statement for the report
✑ be usable only with the SELECT statement for the report
✑ not be saved as a permanent object
Report2: This report joins data from SalesSummary with the Employee table and other tables.
You plan to create an object to support Report1. The object has the following requirements:
✑ be joinable with the SELECT statement that supplies data for the report
✑ can be used multiple times for this report and other reports
✑ accept parameters
✑ be saved as a permanent object
Sales Hierarchy report: This report aggregates rows, creates subtotal rows, and super-aggregates rows over the SalesAmount column in a single
result-set. The report uses SaleYear, SaleQuarter, and SaleMonth as a hierarchy. The result set must not contain a grand total or cross-tabulation
aggregate rows.
Current Price Stored Procedure: This stored procedure must return the unit price for a product when a product code is supplied. The unit price
must include a dollar sign at the beginning. In addition, the unit price must contain a comma every three digits to the left of the decimal point, and
must display two digits to the left of the decimal point. The stored procedure must not throw errors, even if the product code contains invalid data.

End of Repeated Scenario -


You are creating the queries for Report1 and Report2.
You need to create the objects necessary to support the queries.
Which object should you use to join the SalesSummary table with the other tables that each report uses? To answer, drag the appropriate objects
to the correct reports. each object may be used once, more than once, or not at all. You may need to drag the split bar between panes or scroll to
view content.
Select and Place:

Correct Answer:

Box 1: common table expression (CTE)


A common tableexpression (CTE) can be thought of as a temporary result set that is defined within the execution scope of a single SELECT,
INSERT, UPDATE,
DELETE, or CREATE VIEW statement. A CTE is similar to a derived table in that it is not stored as an object and lasts only for the duration of the
query. Unlike a derived table, a CTE can be self-referencing and can be referenced multiple times in the same query.
A CTE can be used to:
✑ Create a recursive query. For more information, see Recursive Queries Using CommonTable Expressions.
✑ Substitute for a view when the general use of a view is not required; that is, you do not have to store the definition in metadata.
✑ Enable grouping by a column that is derived from a scalar subselect, or a function that is either not deterministic or has external access.
✑ Reference the resulting table multiple times in the same statement.
From Scenario: Report1: This report joins data from SalesSummary with the Employee table and other tables. You plan to create an object to
support Report1.
The object has the following requirements:
✑ be joinable with the SELECT statement that supplies data for the report can be used multiple times with the SELECT statement for the report
✑ be usable only with the SELECT statement for the report
✑ not be savedas a permanent object

Box 2: view -
From scenario: Report2: This report joins data from SalesSummary with the Employee table and other tables.
You plan to create an object to support Report1. The object has the following requirements:
✑ be joinable with theSELECT statement that supplies data for the report
✑ can be used multiple times for this report and other reports
✑ accept parameters
✑ be saved as a permanent object
References:
https://technet.microsoft.com/en-us/library/ms190766(v=sql.105).aspx

  safiullah 6 months, 4 weeks ago


I think the
second object should be a "Table Valued Function" because it is stored
permanently in the database and can be used with other queries as well as it can
accept parameters. The answer given chose "View" which is wrong because "Views"
can not accept parameters.
upvoted 14 times

  prakash101179 5 months, 2 weeks ago


Yeah, Second option should be 'Table Valued
Function'
upvoted 5 times

  BenAsare 3 months, 3 weeks ago


A view does
not accept parameters but a TVF does!
upvoted 3 times

  anonimdom 2 months ago


For the 1st object, isn't it a subquery/derived table?
As per the requirement, the object can be used only with the select statement
(not with miltiple statements). The CTE can be used with multiple select
statements.
upvoted 1 times

  Barbedx 2 weeks ago


t be clear - it can be used in one select statement and
in subqueries
upvoted 1 times

  Jiacheng 3 weeks, 5 days ago


CTE cannot be
used with multiple select statement, only one select right after CTE
declaration
upvoted 1 times

  Jiacheng 3 weeks, 5 days ago


and to be
honest, I think first one should be temp table
upvoted 1 times

  Barbedx 2 weeks ago


Question about multiple usage in one SELECT statement,
cte able to do it. also, its not be saved as tempora object.
upvoted 1 times

Question #77 Topic 1

DRAG DROP -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question in this series.
Start of repeated scenario -
You have a database that contains the tables shown in the exhibit. (Click the Exhibit button.)

You review the Employee table and make the following observations:
✑ Every record has a value in the ManagerID except for the Chief Executive Officer (CEO).
✑ The FirstName and MiddleName columns contain null values for some records.
✑ The valid values for the Title column are Sales Representative manager, and CEO.
You review the SalesSummary table and make the following observations:
✑ The ProductCode column contains two parts: The first five digits represent a product code, and the last seven digits represent the unit price.
The unit price uses the following pattern: ####.##.
✑ You observe that for many records, the unit price portion of the ProductCode column contains values.
✑ The RegionCode column contains NULL for some records.
✑ Sales data is only recorded for sales representatives.
You are developing a series of reports and procedures to support the business. Details for each report or procedure follow.
Sales Summary report: This report aggregates data by year and quarter. The report must resemble the following table.

Sales Manager report: This report lists each sales manager and the total sales amount for all employees that report to the sales manager.
Sales by Region report: This report lists the total sales amount by employee and by region. The report must include the following columns:
EmployeeCode,
MiddleName, LastName, RegionCode, and SalesAmount. If MiddleName is NULL, FirstName must be displayed. If both FirstName and
MiddleName have null values, the world Unknown must be displayed/ If RegionCode is NULL, the word Unknown must be displayed.
Report1: This report joins data from SalesSummary with the Employee table and other tables. You plan to create an object to support Report1. The
object has the following requirements:
✑ be joinable with the SELECT statement that supplies data for the report
✑ can be used multiple times with the SELECT statement for the report
✑ be usable only with the SELECT statement for the report
not be saved as a permanent object

Report2: This report joins data from SalesSummary with the Employee table and other tables.
You plan to create an object to support Report1. The object has the following requirements:
✑ be joinable with the SELECT statement that supplies data for the report
✑ can be used multiple times for this report and other reports
✑ accept parameters
✑ be saved as a permanent object
Sales Hierarchy report: This report aggregates rows, creates subtotal rows, and super-aggregates rows over the SalesAmount column in a single
result-set. The report uses SaleYear, SaleQuarter, and SaleMonth as a hierarchy. The result set must not contain a grand total or cross-tabulation
aggregate rows.
Current Price Stored Procedure: This stored procedure must return the unit price for a product when a product code is supplied. The unit price
must include a dollar sign at the beginning. In addition, the unit price must contain a comma every three digits to the left of the decimal point, and
must display two digits to the left of the decimal point. The stored procedure must not throw errors, even if the product code contains invalid data.

End of Repeated Scenario -


You need to create the query for the Sales Managers report.
Which four Transact-SQL segments should you use to develop the solution? To answer, move the appropriate Transact-SQL segments from the list
of Transact-
SQL segments to the answer area and arrange them in the correct order.
Select and Place:
Correct Answer:

From scenario: Sales Manager report: This report lists each sales manager and the total sales amount for all employees that report to the sales
manager.
Box 1:..WHERE Title='Sales representative'
The valid values for the Title column are Sales Representative manager, and CEO.
First we define the CTE expression.
Note: A common table expression (CTE) can be thought of as a temporary result set that is defined within the execution scope of a single
SELECT, INSERT,
UPDATE, DELETE, or CREATE VIEW statement. A CTE is similar to a derived table in that it is not stored as an object and lasts only for the
duration of the query.
Unlike a derived table, a CTE can be self-referencing and can be referenced multiple times in the same query.
Box 2:
Use the CTE expression one time.

Box 3: UNION -
Box 4:
Use the CTE expression a second time.
References:
https://technet.microsoft.com/en-us/library/ms190766(v=sql.105).aspx

  AshleyLiang 6 months, 2 weeks ago


My solution: WITH cte (ManagerID, EmployeeID,
EmployeeCode, Title, SalesAmount) AS ( SELECT e.ManagerID, e.EmployeeID,
e.EmployeeCode, e.Title, ss.SalesAmount FROM dbo.Employee e INNER JOIN
dbo.SalesSummary ss ON e.EmployeeCode = ss.EmployeeCode WHERE ManagerID IS NULL
UNION ALL SELECT e.ManagerID, e.EmployeeID, e.EmployeeCode, e.Title,
cte.SalesAmount FROM dbo.Employee e INNER JOIN cte ON e.ManagerID =
cte.EmployeeID ) SELECT ManagerID, EmployeeID, EmployeeCode, Title,
SUM(SalesAmount) FROM cte GROUP BY ManagerID, EmployeeID, EmployeeCode,
Title
upvoted 3 times

  M4x 6 months ago


Agree (and tested). The solution use Where Title =
'Sales Representative' and specs says that field value can be: The valid values
for the Title column are Sales Representative manager, and CEO.
upvoted 1 times

  M4x 6 months ago


Also missing the employees
upvoted 1 times

  Bartek 5 months, 4 weeks ago


its wrong,
returning SUM() as 0. see sample code CREATE TABLE #EMPLOYEES ( EMPLOYEEID INT,
EMPLOYEECODE INT, FIRSTNAME VARCHAR(20),TITLE VARCHAR(140), MANAGERID INT)
CREATE TABLE #SALESSUMMARY (EMPLOYEECODE INT, SALESAMOUNT DECIMAL(18,2)) INSERT
INTO #EMPLOYEES VALUES (1,11,'BARTEK', 'SALES REPRESENTATIVE', 3),
(2,13,'TOMEK','SALES REPRESENTATIVE',3), (3,12,'KASIA','SALES
REPRESENTATIVE',4), (4,14,'WIKTOR','CTO',NULL) INSERT INTO #SALESSUMMARY
VALUES (11,100),(12,200),(13,300),(14,0) ;WITH cte AS ( SELECT e.ManagerID,
e.EmployeeID, e.EmployeeCode, e.Title, ss.SalesAmount FROM #EmployeeS e INNER
JOIN #SalesSummary ss ON e.EmployeeCode = ss.EmployeeCode WHERE ManagerID IS
NULL UNION ALL SELECT e.ManagerID, e.EmployeeID, e.EmployeeCode, e.Title,
cte.SalesAmount FROM #EmployeeS e INNER JOIN cte ON e.ManagerID = cte.EmployeeID
) SELECT ManagerID, EmployeeID, EmployeeCode, Title, SUM(SalesAmount) FROM cte
GROUP BY ManagerID, EmployeeID, EmployeeCode, Title
upvoted 1 times

  Bartek 5 months, 4 weeks ago


Do not know
that result (from hide bar) is fine becouse it produces duplicates throught
UNION clause. In my opinion something like that : with cte as ( select
e.managerid, e.employeeid, e.employeecode,e.title, ss.salesamount from
#employees e join #salessummary ss on e.employeecode = ss.employeecode where
title = 'sales representative' ) select managerid,
employeeid,employeecode,title,sum(salesamount) as salesamount from cte group by
managerid, employeeid, employeecode, title should be fine
upvoted 1 times

  Bartek 5 months, 4 weeks ago


Complete
solution : CREATE TABLE #EMPLOYEES ( EMPLOYEEID INT, EMPLOYEECODE INT, FIRSTNAME
VARCHAR(20),TITLE VARCHAR(140), MANAGERID INT) CREATE TABLE #SALESSUMMARY
(EMPLOYEECODE INT, SALESAMOUNT DECIMAL(18,2)) INSERT INTO #EMPLOYEES VALUES
(1,11,'BARTEK', 'SALES REPRESENTATIVE', 3), (2,13,'TOMEK','SALES
REPRESENTATIVE',3), (3,12,'KASIA','SALES REPRESENTATIVE',4),
(4,14,'WIKTOR','CTO',NULL) INSERT INTO #SALESSUMMARY VALUES
(11,100),(12,200),(13,300),(14,0) ;WITH cte AS ( SELECT e.ManagerID,
e.EmployeeID, e.EmployeeCode, e.Title, ss.SalesAmount FROM #EmployeeS e INNER
JOIN #SalesSummary ss ON e.EmployeeCode = ss.EmployeeCode where title = 'sales
representative' UNION ALL SELECT e.ManagerID, e.EmployeeID, e.EmployeeCode,
e.Title, cte.SalesAmount FROM #EmployeeS e INNER JOIN cte ON e.ManagerID =
e.EmployeeID ) SELECT ManagerID, EmployeeID, EmployeeCode, Title,
SUM(SalesAmount) FROM cte GROUP BY ManagerID, EmployeeID, EmployeeCode,
Title
upvoted 2 times

  Barbedx 2 weeks ago


agree wth Bartek soluton, we need sales representative.
but in INNER JOIN cte ON e.ManagerID = e.EmployeeID need change to
cte.EmployeeeId
upvoted 1 times

  anonimdom 1 month ago


If we use "WHERE ManagerID IS NULL", the report will
show not only sales managers but CEO too. Isn't it?
upvoted 2 times

Question #78 Topic 1


HOTSPOT -
You have a database that contains the following tables: tblRoles, tblUsers, and tblUsersInRoles.
The table tblRoles is defined as follows.

You have a function named ufnGetRoleActiveUsers that was created by running the following Transact-SQL statement:

You need to list all roles and their corresponding active users. The query must return the RoleId, RoleName, and UserName columns. If a role has
no active users, a NULL value should be returned as the UserName for that role.
How should you complete the Transact-SQL statement? To answer, select the appropriate Transact-SQL segments in the answer area.
Hot Area:

Correct Answer:

Question #79 Topic 1


You have a database named MyDb. You run the following Transact-SQL statements:

A value of 1 in the IsActive column indicates that a user is active.


You need to create a count for active users in each role. If a role has no active users. You must display a zero as the active users count.
Which Transact-SQL statement should you run?

A.

B.

C.

D.

Correct Answer: B

  safiullah 6 months, 4 weeks ago


Hallo, I think
the correct answer should be D, because there is a condition in the question "If
a role has no active users, you must disply a zero as the active users count".
To satisfy this condition the correct answer should be query D, where ISNULL
(U.activeUseCount,0) is used to satify the above condition.
https://docs.microsoft.com/en-us/sql/t-sql/functions/isnull-transact-sql?view=sql-server-2017
upvoted 7 times

  Bartek 5 months, 4 weeks ago


Answer B is
fine. Answer D even do not have "ON" clause after "JOIN" clause
upvoted 2 times

  Scooter123 4 months ago


Answer B is wrong because the COUNT(*) returns 1, it
should be COUNT(U.UserId)
upvoted 6 times

  mlourinho 3 months, 4 weeks ago


Actually, none
of the answers works... (I checked). D answer needs a join that doesn't have B
answer should be COUNT(U.UserID) otherwise COUNT(*) even without active users
always returns the value 1
upvoted 2 times

  fabzo 3 months, 3 weeks ago


I agree with
Scooter123: SELECT R.RoleName, COUNT(UserId) AS ActiveUserCount FROM tb1Roles R
LEFT JOIN (SELECT UserID, RoleID FROM tb1Users WHERE IsActive = 1) U ON
U.RoleId = R.RoleId GROUP BY R.RoleId, R.RoleName I have simulated this as
well
upvoted 1 times

  Barbedx 2 weeks ago


I think is just cropped a part of answer D, and it
should be correct
upvoted 1 times

Question #80 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
to that question.
You have a database for a banking system. The database has two tables named tblDepositAcct and tblLoanAcct that store deposit and loan
accounts, respectively. Both tables contain the following columns:

You need to determine the total number of customers who have either deposit accounts or loan accounts, but not both types of accounts.
Which Transact-SQL statement should you run?

A.

B.

C.

D.

E.
F.

G.

H.

Correct Answer: G
SQL Server provides the full outer join operator, FULL OUTER JOIN, which includes all rows from both tables, regardless of whether or not the
other table has a matching value.
Consider a join of the Product table and the SalesOrderDetail table on their ProductID columns. The results show only the Products that have
sales orders on them. The ISO FULL OUTER JOIN operator indicates that all rows from both tables are to be included in the results, regardless
of whether there is matching data in the tables.
You can include a WHERE clause with a full outer join to return only the rows where there is no matching data between the tables. The following
query returns only those products that have no matching sales orders, as well as those sales orders that are not matched to a product.
USE AdventureWorks2008R2;

GO -
-- The OUTER keyword following the FULL keyword is optional.

SELECT p.Name, sod.SalesOrderID -

FROM Production.Product p -
FULL OUTER JOIN Sales.SalesOrderDetail sod

ON p.ProductID = sod.ProductID -

WHERE p.ProductID IS NULL -

OR sod.ProductID IS NULL -

ORDER BY p.Name -
References:
https://technet.microsoft.com/en-us/library/ms187518(v=sql.105).aspx

Question #81 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
to that question.
You have a database for a banking system. The database has two tables named tblDepositAcct and tblLoanAcct that store deposit and loan
accounts, respectively. Both tables contain the following columns:
You need to determine the total number of customers who have only loan accounts.
Which Transact-SQL statement should you run?

A.

B.

C.

D.

E.

F.

G.

H.
Correct Answer: E
The RIGHT JOIN keyword returns all records from the right table (table2), and the matched records from the left table (table1). The result is
NULL from the left side, when there is no match.
References:
https://www.w3schools.com/sql/sql_join_right.asp

Question #82 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
to that question.
You have a database for a banking system. The database has two tables named tblDepositAcct and tblLoanAcct that store deposit and loan
accounts, respectively. Both tables contain the following columns:

You need to run a query to find the total number of customers who have both deposit and loan accounts.
Which Transact-SQL statement should you run?

A.

B.

C.

D.

E.
F.

G.

H.

Correct Answer: A
The SQL INTERSECT operator is used to return the results of 2 or more SELECT statements. However, it only returns the rows selected by all
queries or data sets. If a record exists in one query and not in the other, it will be omitted from the INTERSECT results.
References:
https://www.techonthenet.com/sql/intersect.php

  raf77 6 months, 1 week ago


A is wrong -
question concern customers, not accounts. D seems ok
upvoted 2 times

  Bartek 5 months, 4 weeks ago


nope, A is
fine.
upvoted 3 times

  raf77 5 months, 3 weeks ago


Indeed A is
fine. My mistake. Thank you.
upvoted 2 times

  Tazul 5 months, 1 week ago


wrong because
A used AcctNo, not CustNo D is correct
upvoted 6 times

  jpdvm 2 weeks, 6 days ago


The FROM
syntax in D is not correct, so all answers are wrong
upvoted 1 times

  mlourinho 3 months, 4 weeks ago


Since "A
customer may have multiple accounts for the same product type" and the question
is about the number of Customers, then A is wrong.
upvoted 2 times

Question #83 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a table named Products that stores information about products your company sells. The table has a column named ListPrice that stores
retail pricing information for products.
Some products are used only internally by the company. Records for these products are maintained in the Products table for inventory purposes.
The price for each of these products is $0.00. Customers are not permitted to order these products.
You need to increase the list price for products that cost less than $100 by 10 percent. You must only increase pricing for products that customers
are permitted to order.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B
Products with a price of $0.00 would also be increased.

  Dieter 6 months, 3 weeks ago


In addition,
the calculation is not correct... +1.1 is not an increase by 10%
upvoted 6 times

  BenAsare 3 months, 3 weeks ago


It is
absolutely fine! (100%+10%=110%)=1.1
upvoted 1 times

  fe 3 months ago
It must be * 1.1 then, not +
upvoted 2 times

  anonimdom 1 month, 3 weeks ago


0 * 1.1 = 0,
so it doesn't impact the 0 values. Looks correct to me (if there is * instead of
+)
upvoted 1 times

Question #84 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a table named Products that stores information about products your company sells. The table has a column named ListPrice that stores
retail pricing information for products.
Some products are used only internally by the company. Records for these products are maintained in the Products table for inventory purposes.
The price for each of these products is $0.00. Customers are not permitted to order these products.
You need to increase the list price for products that cost less than $100 by 10 percent. You must only increase pricing for products that customers
are permitted to order.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B
Products with a price of $0.00 would also be increased.
  anonimdom 1 month ago
0 * 1.1 = 0, so it doesn't impact the 0 values. Looks
correct to me (if there is * instead of +)
upvoted 1 times

  Jiacheng 3 weeks, 5 days ago


The reason is
not +1.1 or *1.1, main reason is for those goods whose price = 0, they are not
permitted to order. The question asks us to increase price for goods which can
be ordered
upvoted 1 times

Question #85 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a table named Products that stores information about products your company sells. The table has a column named ListPrice that stores
retail pricing information for products.
Some products are used only internally by the company. Records for these products are maintained in the Products table for inventory purposes.
The price for each of these products is $0.00. Customers are not permitted to order these products.
You need to increase the list price for products that cost less than $100 by 10 percent. You must only increase pricing for products that customers
are permitted to order.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B
Products with a price between $0.00 and $100 will be increased, while products with a price of $0.00 would not be increased.

  Dieter 6 months, 3 weeks ago


The
calculation is not the required (+ 10%)
upvoted 2 times

  raja1234567890 4 months ago


I
think its meet the goal by not updating amount as $0
upvoted 2 times

  Shanuramasubbu 1 week, 4 days ago


The
Listprice should be multiplied by 1.1 and should not be added I think.
upvoted 1 times

Question #86 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a table that was created by running the following Transact-SQL statement:
The Products table includes the data shown in the following table:

TotalUnitPrice is calculated by using the following formula:


TotalUnitPrice = UnitPrice * (UnitsInStock + UnitsOnOrder)
You need to ensure that the value returned for TotalUnitPrice for ProductB is equal to 600.00.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: A
ISNULL ( check_expression , replacement_value )
Arguments:
check_expression
Is the expression to be checked for NULL. check_expression can be of any type. replacement_value
Is the expression to be returned if check_expression is NULL. replacement_value must be of a type that is implicitly convertible to the type of
check_expresssion.
References:
https://docs.microsoft.com/en-us/sql/t-sql/functions/isnull-transact-sql

  anonimdom 1 month, 3 weeks ago


But here is no
any comparison with 600. It calculates the totals but doesn't check if it is
equal to 600.
upvoted 1 times

  ivanbtod 1 month, 3 weeks ago


It's fine they
just used the second line in the table as reference
upvoted 3 times

Question #87 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a table that was created by running the following Transact-SQL statement:
The Products table includes the data shown in the following table:

TotalUnitPrice is calculated by using the following formula:


TotalUnitPrice = UnitPrice * (UnitsInStock + UnitsOnOrder)
You need to ensure that the value returned for TotalUnitPrice for ProductB is equal to 600.00.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: A
COALESCE evaluates the arguments in order and returns the current value of the first expression that initially does not evaluate to NULL.
References:
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/coalesce-transact-sql

Question #88 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a table that was created by running the following Transact-SQL statement:

The Products table includes the data shown in the following table:

TotalUnitPrice is calculated by using the following formula:


TotalUnitPrice = UnitPrice * (UnitsInStock + UnitsOnOrder)
You need to ensure that the value returned for TotalUnitPrice for ProductB is equal to 600.00.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B
The NULL value in the UnitsOnOrder field would cause a runtime error.
Question #89 Topic 1

You have a database that stores information about server and application errors. The database contains the following table:

Servers -

Errors -

You need to return all unique error log messages and the server where the error occurs most often.
Which Transact-SQL statement should you run?

A.

B.

C.

D.

Correct Answer: A

  AshleyLiang 6 months, 2 weeks ago


A repeated question the closest answer should be
B.
upvoted 2 times

  Ilray 6 months ago


I think В is correct. In A statement "ORDER BY" without
DESC, hence TOP (1) returns min value of occurences.
upvoted 2 times

  Bartek 5 months, 4 weeks ago


B correct,
again sample code DROP TABLE #ERRORS CREATE TABLE #ERRORS ( ERRORID INT PRIMARY
KEY, SERVERID INT, OCCURENCES INT, LOGMESSAGE NVARCHAR(MAX) ) INSERT INTO
#ERRORS (ERRORID, SERVERID, OCCURENCES, LOGMESSAGE) VALUES (1, 1,3,'ERROR1'),
(2,1,2,'ERROR2'), (3,1,10,'ERROR2'), (4,2,4,'ERROR2'), (5,2,14,'ERROR2'),
(6,2,24,'ERROR1'), (7,3,10,'ERROR3'), (8,3,24,'ERROR3') SELECT DISTINCT
SERVERID, LOGMESSAGE FROM #ERRORS AS E1 WHERE OCCURENCES > ALL ( SELECT
E2.OCCURENCES FROM #ERRORS AS E2 WHERE E2.LOGMESSAGE = E1.LOGMESSAGE AND
E2.SERVERID <> E1.SERVERID) SELECT DISTINCT SERVERID, LOGMESSAGE FROM
#ERRORS AS E1 WHERE LOGMESSAGE IN ( SELECT TOP 1 E2.LOGMESSAGE FROM #ERRORS AS
E2 WHERE E1.LOGMESSAGE = E2.LOGMESSAGE AND E1.SERVERID <> E2.SERVERID
ORDER BY OCCURENCES )
upvoted 4 times

  Jiacheng 3 weeks, 5 days ago


for answer B,
just one thing I want to know, why dont't use '>=' all(...), when using
'>', how could 100>100?
upvoted 1 times

Question #90 Topic 1

You have a database that includes the following tables.

HumanResources.Employee -

Sales.SalesPerson -

The HumanResources.Employee table has 2,500 rows, and the Sales.SalesPerson table has 2,000 rows.
You review the following Transact-SQL statement:

You need to determine the performance impact of the query.


How many times will a lookup occur on the primary key index on the Sales.SalesPerson table?

A. 200

B. 2,000

C. 2,500

D. 5,500

Correct Answer: C

Question #91 Topic 1

HOTSPOT -
You have a table named HumanResources.Department that was created with the query shown in the exhibit. (Click the Exhibit button.)

You need to query temporal data in the table.


In the table below, identify the Transact-SQL segments that must be used to retrieve the appropriate data.
NOTE: Make only one selection in each column.
Hot Area:

Correct Answer:

AS OF: Returns a table with a rows containing the values that were actual (current) at the specified point in time in the past.
CONTAINED IN: If you search for non-current row versions only, we recommend you to use CONTAINED IN as it works only with the history table
and will yield the best query performance.
Incorrect Answers:
Not ALL: Returns the union of rows that belong to the current and the history table.
References:
https://docs.microsoft.com/en-us/sql/relational-databases/tables/querying-data-in-a-system-versioned-temporal-table

  AshleyLiang 6 months, 2 weeks ago


If only historical rows are required, the recommendation
is querying the history table directly, i.e. use FROM for the situation of the
second column.
upvoted 1 times

  raf77 6 months, 1 week ago


The
answer is correct. Should be AS OF & CONTAINED IN. CONTAINED IN: Returns a
table with the values for all row versions that were opened and closed within
the specified time range defined by the two datetime values for the CONTAINED IN
argument. Rows that became active exactly on the lower boundary or ceased being
active exactly on the upper boundary are included. Source:
https://docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables?view=sql-server-2017
upvoted 4 times

  mattia_88 4 months, 3 weeks ago


FOR
SYSTEM_TIME CONTAINED IN clause internally retrieving the data from both the
Temporal Table and History Table...SEE THE EXECUTION PLAN
upvoted 1 times

  mattia_88 4 months, 3 weeks ago


FROM / BETWEEN
/ CONTAINED retreive data from history and current table
upvoted 1 times
Question #92 Topic 1

You are building a stored procedure that will update data in a table named Table1 by using a complex query as the data source.
You need to ensure that the SELECT statement in the stored procedure meets the following requirements:
✑ Data being processed must be usable in several statements in the stored procedure.
✑ Data being processed must contain statistics.
What should you do?

A. Update Table1 by using a common table expression (CTE).

B. Insert the data into a temporary table, and then update Table1 from the temporary table.

C. Place the SELECT statement in a derived table, and then update Table1 by using a JOIN to the derived table.

D. Insert the data into a table variable, and then update Table1 from the table variable.

Correct Answer: B
Temp Tables...
Are real materialized tables that exist in tempdb
Have dedicated stats generated by the engine

Can be indexed -

Can have constraints -


Persist for the life of the current CONNECTION
Can be referenced by other queries or subproce
Incorrect Answers:
A: CTEs do not have dedicated stats. They rely on stats on the underlying objects
C: Unlike a derived table, a CTE can be self-referencing and can be referenced multiple times in the same query.
References:
https://technet.microsoft.com/en-us/library/ms190766(v=sql.105).aspx https://dba.stackexchange.com/questions/13112/whats-the-
difference-between-a-cte-and-a-temp-table

Question #93 Topic 1


You have a database that includes the tables shown in the exhibit. (Click the exhibit button.)

You need to create a list of all customers and the date that the customer placed their last order. For customers who have not placed orders, you
must substitute a zero for the order ID and 01/01/1990 for the date.
Which Transact-SQL statement should you run?

A.

B.

C.

D.

Correct Answer: A
COALESCE evaluates the arguments in order and returns the current value of the first expression that initially does not evaluate to NULL.
References:
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/coalesce-transact-sql

  M4x 6 months ago


None of the answers contain the reference to 'you must
substitute a zero for the order ID'
upvoted 5 times

  imran 4 months, 2 weeks ago


ITS ORDER DATE
NOT ORDER ID A IS CORRECT
upvoted 1 times

  Barbedx 1 week, 6 days ago


also there are 1900 in date, no a 1990
upvoted 1 times

Question #94 Topic 1

You have a disk-based table that contains 15 columns.


You query the table for the number of new rows created during the current day.
You need to create an index for the query. The solution must generate the smallest possible index.
Which type of index should you create?

A. clustered

B. filtered nonclustered with a getdate() predicate in the WHERE statement clause

C. hash

D. nonclustered with compression enabled

Correct Answer: B
A filtered index is an optimized nonclustered index especially suited to cover queries that select from a well-defined subset of data. It uses a
filter predicate to index a portion of rows in the table. A well-designed filtered index can improve query performance as well as reduce index
maintenance and storage costs compared with full-table indexes.
Creating a filtered index can reduce disk storage for nonclustered indexes when a full-table index is not necessary.
References:
https://docs.microsoft.com/en-us/sql/relational-databases/indexes/create-filtered-indexes

Question #95 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You have a database that contains several connected tables. The tables contain sales data for customers in the United States only.
You have the following partial query for the database. (Line numbers are included for reference only.)

You need to complete the query to generate the output shown in the following table.

Which statement clause should you add at line 3?

A. GROUP BY

B. MERGE

C. GROUP BY ROLLUP

D. LEFT JOIN

E. GROUP BY CUBE
F. CROSS JOIN

G. PIVOT

H. UNPIVOT

Correct Answer: E
Example of GROUP BY CUBE result set:
In the following example, the CUBE operator returns a result set that has one grouping for all possible combinations of columns in the CUBE list
and a grand total grouping.

References:
https://technet.microsoft.com/en-us/library/bb522495(v=sql.105).aspx

  safiullah 6 months, 3 weeks ago


Hi, My feeling
is this should be a GROUP BY ROLL UP because if you notice we have the following
columns. COUNTRY, PROVINCE, CITY and in ROLL UP we will get the combinations in
an hierarchy. First Combination : COUNTRY, PROVINCE, CITY Second COmbination:
COUNTRY, PROVINCE Third Combination: COUNTRY FINAL combination: ALL This is what
we see in the resultant table.
upvoted 15 times

  Tazul 5 months, 1 week ago


Agreed
upvoted 2 times

  BenAsare 3 months, 3 weeks ago


GROUP BY ROLL
UP is the correct one!
upvoted 2 times

Question #96 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You have a database that contains several connected tables. The tables contain sales data for customers in the United States only.
You have the following partial query for the database. (Line numbers are included for reference only.)
You need to complete the query to generate the output shown in the following table.

Which statement clause should you add at line 3?

A. GROUP BY

B. MERGE

C. GROUP BY ROLLUP

D. LEFT JOIN

E. GROUP BY CUBE

F. CROSS JOIN

G. PIVOT

H. UNPIVOT

Correct Answer: C
In the result sets that are generated by the GROUP BY operators, NULL has the following uses:
✑ If a grouping column contains NULL, all null values are considered equal, and they are put into one NULL group.
✑ When a column is aggregated in a row, the value of the column is shown as NULL.
Example of GROUP BY ROLLUP result set:

References:
https://technet.microsoft.com/en-us/library/bb522495(v=sql.105).aspx

  safiullah 6 months, 3 weeks ago


This should be
a GROUP BY CUBE.
upvoted 9 times

  BenAsare 3 months, 3 weeks ago


Yeah... GROUP
BY CUBE is perfect!
upvoted 1 times

  anonimdom 1 month, 3 weeks ago


Why CUBE? The
CUBE gives all combinations, which is not the case in the example.
upvoted 2 times

  aerodactil 1 month, 2 weeks ago


i think it's
rollup because there is a hierarchy formed by the imput elements
upvoted 3 times

Question #97 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You have a database that contains several connected tables. The tables contain sales data for customers in the United States only.
You have the following partial query for the database. (Line numbers are included for reference only.)

You need to complete the query to generate the output shown in the following table.

Which statement clause should you add at line 3?

A. GROUP BY

B. MERGE

C. GROUP BY ROLLUP

D. LEFT JOIN

E. GROUP BY CUBE

F. CROSS JOIN

G. PIVOT

H. UNPIVOT

Correct Answer: F
A cross join that does not have a WHERE clause produces the Cartesian product of the tables involved in the join. The size of a Cartesian
product result set is the number of rows in the first table multiplied by the number of rows in the second table.
References:
https://technet.microsoft.com/en-us/library/ms190690(v=sql.105).aspx

  AshleyLiang 6 months, 2 weeks ago


It should go for GROUP BY ROLLUP.
upvoted 12 times

  Hasanjaf 2 months, 2 weeks ago


why? i think
group by cube
upvoted 2 times

  Mag53 1 month, 2 weeks ago


C. GROUP BY
ROLLUP is correct ROLLUP sums the Sales at three levels. First it would return
the sum of Sales at Country-Province-City level. Then it would sum the sales at
Country-Province level and finally on Country level. It would also provide a
grand total level (4th row). Thats what is shown in the table. NULL is a
placeholder in a row generated as an aggregate result. E. GROUP BY CUBE is
incorrect: CUBE groups data in all possible combinations of columns so the sales
would be summed up in following levels: 1. Country-Province-City 2.
Province-City 3. City 4. Country-Province 5. Province 6. Country-City 7.
Country 8. All F. Cross JOIN is completely incorrect as we retrieve data from
one table only
upvoted 1 times

Question #98 Topic 1

You create a table by running the following Transact-SQL statement:

You need to view all customer data.


Which Transact-SQL statement should you run?

A.

B.

C.

D.

E.

F.
G.

H.

Correct Answer: B
The FOR SYSTEM_TIME ALL clause returns all the row versions from both the Temporal and History table.
References:
https://msdn.microsoft.com/en-us/library/dn935015.aspx

Question #99 Topic 1

SIMULATION -
You have a table named Cities that has the following two columns: CityID and CityName. The CityID column uses the int data type, and CityName
uses nvarchar
(max).
You have a table named RawSurvey. Each row includes an identifier for a question and the number of persons that responded to that question
from each of four cities. The table contains the following representative data:

A reporting table named SurveyReport has the following columns: CityID, QuestionID, and RawCount, where RawCount is the value from the
RawSurvey table.
You need to write a Transact-SQL query to meet the following requirements:
✑ Retrieve data from the RawSurvey table in the format of the SurveyReport table.
✑ The CityID must contain the CityID of the city that was surveyed.
✑ The order of cities in all SELECT queries must match the order in the RawSurvey table.
✑ The order of cities in all IN statements must match the order in the RawSurvey table.
Construct the query using the following guidelines:
✑ Use one-part names to reference tables and columns, except where not possible.
ALL SELECT statements must specify columns.

✑ Do not use column or table aliases, except those provided.


Do not surround object names with square brackets.
Part of the correct Transact-SQL has been provided in the answer area below. Enter the code in the answer area that resolves the problem and
meets the stated goals or requirements. You can add code within the code that has been provided as well as below it.

Use the Check Syntax button to verify your work. Any syntax or spelling errors will be reported by line and character position.

Correct Answer: Please see explanation


1 SELECT Rawcount
2 from (select cityid,questioned,rawcount) AS t1
3 unpivot
4 (rawcount for questioned in (QuestionID)) AS t2
5 JOIN t2
6. ON t1.CityName = t2.cityName
UNPIVOT must be used to rotate columns of the Rawsurvey table into column values.
References:
https://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx

  raf77 6 months ago


Something is wrong with this question. I see only one
solution: SELECT CityID, QuestionID, RawCount from RawSurvey UNPIVOT
(CityName FOR ('Tokio', 'Boston', 'London', 'New York')) AS t1 PIVOT
(sum(RawCount) for questionid in (QestionID)) as t2 INNER JOIN Cities on
t1.CityName = Cities.CityName
upvoted 1 times

  M4x 6 months ago


You must enclose the cityname between [ and ]
upvoted 2 times

  M4x 6 months ago


The purple text is the question, and the black text is
the answer
upvoted 1 times

  M4x 6 months ago


declare @RawSurvey as table ( QuestionID char(2) not
null primary key clustered, Tokyo int not null, Boston int not null, London int
not null, NewYork int not null ) insert into @RawSurvey values ('Q1', 1, 42, 48,
51), ('Q2', 22, 39, 58, 42), ('Q3', 29, 41, 61, 33), ('Q4', 62, 70, 60, 50)
select QuestionId, City, Answer from ( select QuestionId, Tokyo, Boston,
London, NewYork from @RawSurvey ) as t1 unpivot ( Answer for City in ([Tokyo],
[Boston], [London], [NewYork]) ) as t2
upvoted 3 times

  Bartek 5 months, 3 weeks ago


SELECT CITYID,
QUESTIONID, RAWCOUNT FROM CITIES AS T1 JOIN ( SELECT QUESTIONID, RAWCOUNT ,
CITYNAME FROM RAVSURVEY UNPIVOT (RAWCOUNT FOR CITYNAME IN ('TOKYO','BOSTON'))
AS PVT ) AS T2 ON T1.CITYNAME = T2.CITYNAME
upvoted 1 times

  mlourinho 3 months, 4 weeks ago


SELECT
Cities.CityID, T1.QuestionID, T2.RawCount FROM ( SELECT QuestionID, Tokyo,
Boston, London, [New York] from RawSurvey ) t1 unpivot( RawCount FOR CityName
(Tokyo, Boston, London, [New York]) ) t2 INNER JOIN Cities ON T2.CityName =
Cities.CityName
upvoted 4 times

Question #100 Topic 1

SIMULATION -
You create a table named Sales.Categories by running the following Transact-SQL statement:

You add the following data to the table.

You need to create a query that uses a common table expression (CTE) to show the parent category of each category. The query must meet the
following requirements:
✑ Return all columns from the Categories table in the order shown.
✑ Exclude all categories that do not have a parent category.
Construct the query using the following guidelines:
✑ Name the expression ParentCategories.
✑ Use PC as the alias for the expression.
✑ Use C as the alias for the Categories table.
Use the AS keyword for all table aliases.

✑ Use individual column names for each column that the query returns.
✑ Do not use a prefix for any column name.
✑ Do not use implicit joins.
Do not surround object names with square brackets.
Part of the correct Transact-SQL has been provided in the answer area below. Enter the code in the answer area that resolves the problem and
meets the stated goals or requirements. You can add code within the code that has been provided as well as below it.

Use the Check Syntax button to verify your work. Any syntax or spelling errors will be reported by line and character position. You may check
syntax as many times as needed.

Correct Answer: Please see explanation


1 WITH ParentCategories pc (CategoryID, Name, PatentCategoryID) AS (SELECT c.categoryID,c.name,c.parentcategoryid
2 FROM sales.categories c
3 WHERE parentcategoryid is not null
4)
5 SELECT * FROM parentcategories
Note: On Line 1 replace c with WITH ParentCategories pc (CategoryID, Name, PatentCategoryID) AS
Note: The basic syntax structure for a CTE is:
WITH expression_name [ ( column_name [,...n] ) ]

AS -
( CTE_query_definition )
References:
https://technet.microsoft.com/en-us/library/ms190766(v=sql.105).aspx

  raf77 6 months ago


with parentcategories AS (Select c.categoryid, c.name,
c.parentcategoryid from sales.categories c where parentcategory is not null
) select * from parentcategories pc
upvoted 3 times

  M4x 6 months ago


For best pratice avoid use of *. declare @Categories as
table ( CategoryId smallint not null primary key, Name nvarchar(50) not null,
ParentCategoryID int null ) insert into @Categories values (1, 'Electronics',
null), (2, 'Cameras and photo', 1), (3, 'Computers and tables', 1), (4, 'Cell
phones and accessories', 1), (5, 'TV and audio', 1), (6, 'Digital Cameras', 2),
(9, 'Laptops', 3), (13, 'Household goods', null), (14, 'Bathroom items', 13),
(15, 'Shower curtains', 14) ; with ParentCategories (CategoryId, Name,
ParentCategoryId) as ( SELECT c.categoryID,c.name,c.parentcategoryid FROM
@Categories c WHERE parentcategoryid is not null ) select CategoryId, Name,
ParentCategoryId from ParentCategories pc
upvoted 2 times

  imran 4 months, 2 weeks ago


WHERE IS THE
NAME OF THE PARENT CATEGORY YOU SHOULD JOIN PC CTE WITH TABLE TO GET
THAT
upvoted 1 times

  imran 4 months, 2 weeks ago


THIS MIGHT BE
CORRECT CREATE TABLE CATEGORIES ( CategoryId smallint not null primary key, Name
nvarchar(50) not null, ParentCategoryID int null ) insert into CATEGORIES values
(1, 'Electronics', null), (2, 'Cameras and photo', 1), (3, 'Computers and
tables', 1), (4, 'Cell phones and accessories', 1), (5, 'TV and audio', 1), (6,
'Digital Cameras', 2), (9, 'Laptops', 3), (13, 'Household goods', null), (14,
'Bathroom items', 13), (15, 'Shower curtains', 14) ; with ParentCategories
(CategoryId, Name, ParentCategoryId) as ( SELECT
c.categoryID,c.name,c.parentcategoryid FROM CATEGORIES c --WHERE
parentcategoryid ) select C.CategoryId, C.Name,
C.ParentCategoryID,ParentCategories.Name from CATEGORIES C JOIN ParentCategories
ON ParentCategories.CategoryId = C.ParentCategoryID
upvoted 1 times

  Ilray 5 months, 4 weeks ago


'use the AS
keyword for all table aliases' - i think correctly 'AS c', 'AS pc'
upvoted 2 times

  imran 4 months, 2 weeks ago


WHERE IS THE
NAME OF THE PARENT CATEGORY?
upvoted 1 times

  mlourinho 3 months, 4 weeks ago


;WITH
ParentCategories AS ( SELECT CategoryID AS ParentCategoryID, Name AS
ParentCategoryName FROM Sales.Categories WHERE ParentCategoryID IS NULL ) SELECT
PC.ParentCategoryID, PC.ParentCategoryName, C.CategoryID, C.Name FROM
SalesCategories C INNER JOIN ParentCategories PC ON
C.ParentCategoryID = PC.ParentCategoryID WHEER C.ParentCategoryID IS NOT
NULL
upvoted 1 times

  New_user 2 months, 3 weeks ago


You don't need
to use 'IS NULL' and 'IS NOT NULL' statement because it removes the middle stage
of groups' hierarchy. Laptops and dig. cameras also have parent category. This
code works: with ParentCategories as ( select * from Categories c ) select
c.categoryid, c.name, c.parentcategoryid, pc.name AS ParentCategoryName from
ParentCategories pc join Categories c on pc.categoryid=c.parentcategoryid
;
upvoted 1 times

  moehijawe 2 months ago


with ParentCategories as ( select categoryid, name,
parentcategoryid from Sales.Categories as c where parentcategoryid is null
union all select c.categoryid, c.name, c.parentcategoryid from
ParentCategories as pc join Sales.Categories as c on (pc.parentcategoryid =
c.categoryid) ) select categoryid, name, parentcategoryid from
Sales.Categories where parentcategoryid is not null
upvoted 2 times
Question #101 Topic 1

SIMULATION -
You have a database that includes the following tables. All of the tables are in the Production schema.

You need to create a query that returns a list of product names for all products in the Beverages category.
Construct the query using the following guidelines:
✑ Use the first letter of the table name as the table alias.
✑ Use two-part column names.
✑ Do not surround object names with square brackets.
✑ Do not use implicit joins.
✑ Do not use variables.
✑ Use single quotes to surround literal values.
Part of the correct Transact-SQL has been provided in the answer area below. Enter the code in the answer area that resolves the problem and
meets the stated goals or requirements. You can add code within the code that has been provided as well as below it.

Use the Check Syntax button to verify your work. Any syntax or spelling errors will be reported by line and character position. You may check
syntax as many times as needed.

Correct Answer: Please see explanation


1 SELECT p.productname
2 FROM Production.categories AS c
3 inner join production.products as p on c.categoryid=p.categoryid
4 WHERE c.categoryname = 'Beverages'
Note: On line 3 change * to =

Question #102 Topic 1

SIMULATION -
You work for an organization that monitors seismic activity around volcanos. You have a table named GroundSensors. The table stored data
collected from seismic sensors. It includes the columns describes in the following table:

The database also contains a scalar value function named NearestMountain that accepts a parameter of type geography and returns the name of
the mountain that is nearest to the sensor.
You need to create a query that shows the average of the normalized readings from the sensors for each mountain. The query must meet the
following requirements:
✑ Return the average normalized readings named AverageReading.
✑ Return the nearest mountain name named Mountain.
✑ Do not return any other columns.
✑ Exclude sensors for which no normalized reading exists.
Construct the query using the following guidelines:
✑ Use one part names to reference tables, columns and functions.
✑ Do not use parentheses unless required.
Define column headings using the AS keyword.

Do not surround object names with square brackets.

Part of the correct Transact-SQL has been provided in the answer area below. Enter the code in the answer area that resolves the problem and
meets the stated goals or requirements. You can add code within the code that has been provided as well as below it.

Use the Check Syntax button to verify your work. Any syntax or spelling errors will be reported by line and character position.

Correct Answer: Please see explanation


1 SELECT avg (normalizedreading) as AverageReading, location as Mountain
2 FROM GroundSensors
3 WHERE normalizedreading is not null
Note: On line 1 change to AverageReading and change to Mountain.

  safiullah 6 months, 3 weeks ago


Hi, I believe
the correct answer should be. SELECT avg(normalizedreading) as AverageReading,
Nearestmountain(location) as mountain FROM GroundSensors WHERE normalizedreading
is not NULL GROUP BY location Note: Since "AVG" is an aggregation based on
location, therefore we need GROUP BY based on location. Also we will not display
location but the mountain in the location using the scalar function nearest
mountain.
upvoted 4 times

  Dieter 6 months, 3 weeks ago


Make sure that
the GROUP BY clause contains also the "Nearestmountain" function
upvoted 3 times

  AshleyLiang 6 months, 2 weeks ago


Or simply: GROUP BY Mountain as the alias
specified.
upvoted 1 times

  imran 4 months, 2 weeks ago


YOU CANT USE
ALIAS IN GROUP BY CLAUSE
upvoted 5 times

  Jiacheng 3 weeks, 4 days ago


it doesn't
matter, same location will get same result after function, so using group by
location is fine too
upvoted 2 times

  M4x 6 months ago


select NearestMountain(Location) AS Mountain,
AVG(Tremor) AS AverageReading from GroundSensors where NormalizedReading is not
null group by NearestMountain(Location)
upvoted 3 times

  anonimdom 4 weeks ago


Why AVG(Tremor) instead of
avg(normalizedreading)?
upvoted 1 times

  mlourinho 3 months, 3 weeks ago


SELECT
dbo.NearestMountain(g.Location) as Mountain , avg(g.NormalizedReading) as
AverageReading FROM GroundSensor g where g.NormalizedReading is not null group
by g.Location
upvoted 1 times

Question #103 Topic 1

SIMULATION -
You create a table named Sales.Orders by running the following Transact-SQL statement:

You need to write a query that removes orders from the table that have a Status of Canceled.
Construct the query using the following guidelines:
use one-part column names and two-part table names

✑ use single quotes around literal values


✑ do not use functions
✑ do not surround object names with square brackets
✑ do not use variables
do not use aliases for column names and table names
Part of the correct Transact-SQL has been provided in the answer area below. Enter the code in the answer area that resolves the problem and
meets the stated goals or requirements. You can add code within the code that has been provided as well as below it.

Use the Check Syntax button to verify your work. Any syntax or spelling errors will be reported by line and character position.

Correct Answer: Please see explanation


1. DELETE from sales.orders where status='Canceled'
Note: On line 1 change calceled to Canceled
Example: Using the WHERE clause to delete a set of rows
The following example deletes all rows from the ProductCostHistory table in the AdventureWorks2012 database in which the value in the
StandardCost column is more than 1000.00.
DELETE FROM Production.ProductCostHistory
WHERE StandardCost > 1000.00;
References:
https://docs.microsoft.com/en-us/sql/t-sql/statements/delete-transact-sql

Question #104 Topic 1


SIMULATION -
You have a database that contains the following tables.

You need to create a query that lists the highest-performing salespersons based on the current year-to-date sales period. The query must meet the
following requirements:
✑ Return the LastName and SalesYTD for the three salespersons with the highest year-to-date sales values.
✑ Exclude salespersons that have no value for TerritoryID.
Construct the query using the following guidelines:
✑ Use the first letter of a table name as the table alias.
✑ Use two-part column names.
✑ Do not surround object names with square brackets.
✑ Do not use implicit joins.
✑ Use only single quotes for literal text.
Use aliases only if required.

Part of the correct Transact-SQL has been provided in the answer area below. Enter the code in the answer area that resolves the problem and
meets the stated goals or requirements. You can add code within the code that has been provided as well as below it.
1 SELECT top 3 lastname,salesYTD
2 FROM Person AS p INNER JOIN SalesPerson AS s
3 ON p.PersonID = s.SalesPersonID
4 WHERE territoryid is null
5 order by salesytd dsec
Use the Check Syntax button to verify your work. Any syntax or spelling errors will be reported by line and character position.

Correct Answer: Please see explanation


1 SELECT top 3 lastname,salesYTD
2 FROM Person AS p INNER JOIN SalesPerson AS s
3 ON p.PersonID = s.SalesPersonID
4 WHERE territoryid is not null
5 order by salesytd desc
Note:
On line 4 add a not before null.
On line 5 change dsec to desc.

  Bartek 5 months, 3 weeks ago


Should not be
s.PersonId = p.PersonId. nevertheless PersonId in SalesPerson table looks like
foreign key to Person table...
upvoted 1 times

  mattia_88 4 months, 3 weeks ago


Exclude
salespersons that have no value for TerritoryID. "WHERE TerritoryID IS NOT
NULL"
upvoted 1 times

  Jiacheng 3 weeks, 4 days ago


that's why we
say SQL database engine is smart. if column is only shows on specific table, we
can use it without using two named convension
upvoted 1 times

  BenAsare 3 months, 3 weeks ago


SELECT top(3)
p.lastname, s.salesYTD *use two part column naming
upvoted 2 times

  anonimdom 4 weeks ago


But *Use aliases only if required. Quite an ambiguous
question.
upvoted 1 times

Question #105 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
to that question.
You have a database for a banking system. The database has two tables named tblDepositAcct and tblLoanAcct that store deposit and loan
accounts, respectively. Both tables contain the following columns:

You need to determine the total number of deposit and loan accounts.
Which Transact-SQL statement should you run?
A.

B.

C.

D.

E.

F.

G.

H.

Correct Answer: C
Would list the customers with duplicates, which would equal the number of accounts.
Incorrect Answers:
A: INTERSECT returns distinct rows that are output by both the left and right input queries operator.
B: Would list the customers without duplicates.
D: Number of customers.
F: EXCEPT returns distinct rows from the left input query that aren't output by the right input query.
References:
https://msdn.microsoft.com/en-us/library/ms180026.aspx

  dragan 5 months, 2 weeks ago


A is correct
answer.
upvoted 1 times

  dragan 5 months, 2 weeks ago


Sorry it is
ok. "total number of deposit and loan accounts" not both
upvoted 2 times

  imran 4 months, 2 weeks ago


cant be A FOR
SURE
upvoted 2 times

  mattia_88 4 months, 3 weeks ago


" total number
of deposit and loan accounts" is correct answer C (UNION ALL)
upvoted 4 times

  mlourinho 3 months, 3 weeks ago


» deposit and
loan accounts, meaning ACCOUNTS that are in the table deposit and the table
accounts. Also, the question demands ACCOUNTS not Customers. So yes, A is the
correct answer.
upvoted 1 times

  anonimdom 1 month, 3 weeks ago


A doesn't
count accounts which present only in one table, C counts users, if we want to
count all accounts (not only intersection), the correct answer might be
H.
upvoted 2 times

  SlazericeQ 1 month, 1 week ago


we need to
count all accounts, so that means count all rows in both tables (one user can
have more accounts). Therefore we need to use UNION ALL, so C seems as right
answer to me. Tested as: declare @Dep as table ( cust smallint not null primary
key, acc smallint null ) insert into @Dep values (1,45),(2,47),(3,78) declare
@Loan as table ( cust smallint not null primary key, acc smallint null ) insert
into @Loan values (1,33),(3,35) select * from @Dep select * from @Loan select
count(*) from( select d.cust from @Dep as d union all select l.cust from @Loan
as l ) as R
upvoted 2 times

  anonimdom 4 weeks, 1 day ago


But, your query selects cust, not acct. If each cust has
only one acct then it looks correct. If a cust has more than one acct, then it
looks like it counts a wrong columns.
upvoted 2 times

  Andi64 2 weeks, 4 days ago


if a customer
has 3 deposit accounts then the query <select custno from deposit >
returns this custno 3 times, that means, you count the total number of records.
I think, answer C) with union all statement is ok
upvoted 3 times

  Barbedx 1 week, 6 days ago


So, there are C and H answers are correct, agree with
mattia_88 and Andi64 both are rights, and both query will return equivalent
answers
upvoted 1 times

Question #106 Topic 1

HOTSPOT -
You need to develop a Transact-SQL statement that meets the following requirements:
✑ The statement must return a custom error when there are problems updating a table.
✑ The error number must be the value 50555.
✑ The error severity level must be 14.
✑ A Microsoft SQL Server alert must be triggered when the error condition occurs.
Which Transact-SQL segment should you use for each requirement? To answer, select the appropriate Transact-SQL segments in the answer area.
Hot Area:

Correct Answer:

RAISERROR generates an error message and initiates error processing for the session. RAISERROR can either reference a user-defined message
stored in the sys.messages catalog view or build a message dynamically. The message is returned as a server error message to the calling
application or to an associated
CATCH block of a TRY"¦CATCH construct. New applications should use THROW instead.
Note: RAISERROR syntax:
RAISERROR( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ] )
[ WITH option [ ,...n ] ]
The LOG option logs the error in the error log and the application log for the instance of the Microsoft SQL Server Database Engine.
References:
https://msdn.microsoft.com/en-us/library/ms178592.aspx

  Bartek 5 months ago


Its strange that we can use both error id and message in
RAISERROR. In addition RAISERROR cannot see eerror id > 50000 if there is not
permanently written to sys.messages
https://sqlhints.com/tag/raiserror-vs-throw/
upvoted 1 times

  mattia_88 4 months, 3 weeks ago


is correct if
before is added the message with code 50555 EXEC sp_addmessage 50555, 14,
N'%s';
upvoted 1 times

Question #107 Topic 1


HOTSPOT -
You have two tables as shown in the following image:

You need to analyze the following query. (Line numbers are included for reference only.)

Use the drop-down menus to select the answer choice that completes each statement based on the information presented in the graphic.
NOTE: Each correct selection is worth one point.
Hot Area:
Correct Answer:

To compare char(5) and nchar(5) an implicit conversion has to take place.


Explicit conversions use the CAST or CONVERT functions, as in line number 6.
References:
https://docs.microsoft.com/en-us/sql/t-sql/data-types/data-type-conversion-database-engine#implicit-and-explicit-conversion

Question #108 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database that tracks orders and deliveries for customers in North America. The database contains the following tables:

Sales.Customers -

Application.Cities -

Sales.CustomerCategories -

Your company is developing a new social application that connects customers to each other based on the distance between their delivery
locations.
You need to write a query that returns the nearest customer.
Solution: You run the following Transact-SQL statement:
The variable @custID is set to a valid customer.
Does the solution meet the goal?

A. Yes

B. No

Correct Answer: A
ShortestLineTo (geometry Data Type) Returns a LineString instance with two points that represent the shortest distance between the two
geometry instances. The length of the LineString instance returned is the distance between the two geometry instances.
STLength (geometry Data Type) returns the total length of the elements in a geometry instance.
References:
https://docs.microsoft.com/en-us/sql/t-sql/spatial-geometry/shortestlineto-geometry-data-type

Question #109 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database that tracks orders and deliveries for customers in North America. The database contains the following tables:

Sales.Customers -

Application.Cities -

Sales.CustomerCategories -

Your company is developing a new social application that connects customers to each other based on the distance between their delivery
locations.
You need to write a query that returns the nearest customer.
Solution: You run the following Transact-SQL statement:

The variable @custID is set to a valid customer.


Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B

  Bartek 4 months, 4 weeks ago


I think there
should be YES. Example: drop table [TSQLV4].[HR].[customers] create table
[TSQLV4].[HR].[customers] ( customerid int identity (1,1), Deliverylocation
geography ) set identity_insert [TSQLV4].[HR].[customers] on insert into
[TSQLV4].[HR].[customers] (customerid) values (1),(2),(3) UPDATE
[TSQLV4].[HR].[customers] SET Deliverylocation = geography::Point( 40.854078,
-73.869043 ,4326 ) where customerid =1 -- bronx zoo, closest to wsq, far to
airport UPDATE [TSQLV4].[HR].[customers] SET Deliverylocation =
geography::Point( 40.730581, -73.997732 ,4326 ) where customerid =2 --washigton
square park closest to airport UPDATE [TSQLV4].[HR].[customers] SET
Deliverylocation = geography::Point( 40.657440, -73.776462,4326 ) where
customerid =3 -- airport jfk declare @id int = 3 select top 1 b.customerid,
a.Deliverylocation.STDistance(b.deliverylocation) as dist from
[TSQLV4].[HR].[customers] as a cross join [TSQLV4].[HR].[customers] as b where
a.customerid = @id and a.customerid <> b.customerid order by
dist
upvoted 2 times

  moehijawe 2 months ago


there is no order in the query so no guarantee what
returned record is in top so answer is no
upvoted 2 times

  moehijawe 2 months ago


Plus it inner join
upvoted 1 times

Question #110 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database that tracks orders and deliveries for customers in North America. The database contains the following tables:

Sales.Customers -
Application.Cities -

Sales.CustomerCategories -

Your company is developing a new social application that connects customers to each other based on the distance between their delivery
locations.
You need to write a query that returns the nearest customer.
Solution: You run the following Transact-SQL statement:

The variable @custID is set to a valid customer.


Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B

  mlourinho 3 months, 3 weeks ago


The right
answer is A. IF OBJECT_ID ('TEMPDB..#Customer') IS NOT NULL DROP TABLE
#Customer; GO CREATE TABLE #Customer( CustomerID INT IDENTITY (1,1)
, DeliveryLocation GEOGRAPHY , LocationName VARCHAR(150) ); GO INSERT
INTO #Customer(DeliveryLocation, LocationName) VALUES (geography::Point(38.7071,
-9.13549, 4326), 'Lisboa') , (geography::Point(41.15, -8.61024, 4326), 'Porto')
, (geography::Point(40.4165000, -3.7025600, 4326), 'Madrid') ,
(geography::Point(41.3887901, 2.1589899, 4326), 'Barcelona') -- SELECT * FROM
#Customer DECLARE @CustID INT = 4 SELECT TOP 1 A.CustomerID, A.LocationName ,
A.DeliveryLocation.STDistance(B.DeliveryLocation) AS Distancia , B.CustomerID,
B.LocationName FROM #Customer A CROSS JOIN #Customer B WHERE A.CustomerID =
@CustID AND A.CustomerID <> B.CustomerID ORDER BY Distancia
upvoted 6 times

  New_user 2 months, 2 weeks ago


B is correct
answer. Name "Dist" can't be used on 'order by' clause cause it isn't a table's
column name or function applied to it
upvoted 1 times

  anonimdom 1 month, 3 weeks ago


It can't be
used with GROUP by, but can be used with ORDER by.
upvoted 2 times

  flashed 1 month ago


Wrong. Logical order: 1 FROM; 2 WHERE 3 GROUP BY 4
HAVING 6 ORDER BY. So you can order by select alias.
upvoted 1 times

  flashed 1 month ago


i forgot 5. SELECT
upvoted 2 times

Question #111 Topic 1


Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database that tracks orders and deliveries for customers in North America. The database contains the following tables:

Sales.Customers -

Application.Cities -

Sales.CustomerCategories -

Your company is developing a new social application that connects customers to each other based on the distance between their delivery
locations.
You need to write a query that returns the nearest customer.
Solution: You run the following Transact-SQL statement:
SELECT TOP 1 B.CustomerID, A.DeliveryLocation.STDistance(B.DeliveryLocation) AS Dist

FROM Sales.Customers AS A -

CROSS JOIN Sales.Customers AS B -


WHERE A.CustomerID = @custID AND A.CustomerID <> B.CustomerID

ORDER BY Dist -
The variable @custID is set to a valid customer.
Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B

  Scooter123 4 months ago


It seems working
upvoted 5 times

  mlourinho 3 months, 3 weeks ago


IF OBJECT_ID
('TEMPDB..#Customer') IS NOT NULL DROP TABLE #Customer; GO CREATE TABLE
#Customer( CustomerID INT IDENTITY (1,1) , DeliveryLocation GEOGRAPHY
, LocationName VARCHAR(150) ); GO INSERT INTO #Customer(DeliveryLocation,
LocationName) VALUES (geography::Point(38.7071, -9.13549, 4326), 'Lisboa') ,
(geography::Point(41.15, -8.61024, 4326), 'Porto') ,
(geography::Point(40.4165000, -3.7025600, 4326), 'Madrid') ,
(geography::Point(41.3887901, 2.1589899, 4326), 'Barcelona') -- SELECT * FROM
#Customer DECLARE @CustID INT = 4 SELECT TOP 1 A.CustomerID, A.LocationName ,
A.DeliveryLocation.STDistance(B.DeliveryLocation) AS Distancia , B.CustomerID,
B.LocationName FROM #Customer A CROSS JOIN #Customer B WHERE A.CustomerID =
@CustID AND A.CustomerID <> B.CustomerID ORDER BY Distancia
upvoted 2 times

  Jiacheng 3 weeks, 4 days ago


it is just
same to the previous one, both answer should be A
upvoted 3 times

Question #112 Topic 1

DRAG DROP -
You have a database containing the following tables:

Servers -

Errors -

You have a user-defined, scalar function named IPLookup that takes a DNS name as a parameter and returns the IP address of the server. You
have an additional user-defined, scalar function named DNSLookup, that takes an IP address as a parameter and returns a DNS name.
You create a view named vwErrors by running the following Transact-SQL statement:

You need to insert data by using the view.


How should you complete the Transact-SQL statement? To answer, drag the appropriate Transact-SQL segments to the correct location. Each
Transact-SQL segments may be used once, more than once, or not at all. You may need to drag the split bar between panes or scroll to view
content.
Select and Place:
Correct Answer:

References:
https://docs.microsoft.com/en-us/sql/t-sql/queries/output-clause-transact-sql

Question #113 Topic 1

You need to create a table named Sales that meets the following requirements:

Which Transact-SQL statement should you run?

A.

B.

C.

D.

E.
Correct Answer: D
datetime2 Defines a date that is combined with a time of day that is based on 24-hour clock. datetime2 can be considered as an extension of
the existing datetime type that has a larger date range, a larger default fractional precision, and optional user-specified precision.
Incorrect Answers:
B, C, E: NEWQSEQUENTIALID creates a GUID that is greater than any GUID previously generated by this function on a specified computer since
Windows was started. A GUID uses more space then IDENTITY value.
References:
https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetime2-transact-sql https://docs.microsoft.com/en-us/sql/t-
sql/functions/newsequentialid-transact-sql

  Bartek 5 months, 3 weeks ago


I think there
should be answer A better :
https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.esqlc.doc/ids_esqlc_0190.htm
upvoted 1 times

  Bartek 4 months, 4 weeks ago


I was wrong
https://database.guide/datetime-vs-datetime2-in-sql-server-whats-the-difference/
upvoted 2 times

  imran 4 months, 2 weeks ago


THERE IS NO
PRIMARY KEY DEFINED WHICH UNIQUELY IDENTIFY THE COLUMN
upvoted 1 times

  mattia_88 4 months, 3 weeks ago


datetime2 is
STANDARD SQL
upvoted 1 times

Question #114 Topic 1

You have a database named DB1 that contains two tables named Sales.Customers and Sales.CustomerTransaction. Sales.CustomerTransactions
has a foreign key relationship to column named CustomerID in Sales.Customers.
You need to recommend a query that returns the number of customers who never completed a transaction.
Which query should you recommend?

A.

B.
C.

D.

Correct Answer: A
Incorrect Answers:
B: The count should be on the Cust instance of Sales.Customers as it is to the right side of the join.
C: Need a WHERE statement with an IS NULL clause.
D: Must use a LEFT JOIN to obtain the NULL values.
References:
https://technet.microsoft.com/en-us/library/ms190014(v=sql.105).aspx

Question #115 Topic 1

HOTSPOT -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question in this series.
You query a database that includes two tables: Project and Task. The Project table includes the following columns:

The Task table includes the following columns:

Users report performance issues when they run the following query:

You need to improve query performance and limit results to projects that specify an end date.
How should you complete the Transact-SQL statement? To answer, select the appropriate Transact-SQL segments in the answer area.
Hot Area:

Correct Answer:

Wildcard character %: Any string of zero or more characters.


For example: If the LIKE '5%' symbol is specified, the Database Engine searches for the number 5 followed by any string of zero or more
characters.
References:
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/like-transact-sql

  Dieter 6 months, 3 weeks ago


Is a wild card
comparison actually better in performance issues compared to "LEFT(expression,
length) LIKE 'TEST'"? in opinion it is not. any hints?
upvoted 1 times

  AshleyLiang 6 months, 2 weeks ago


Yes. This is related a terminology named Sargable:
https://www.sqlshack.com/how-to-use-sargable-expressions-in-t-sql-queries-performance-advantages-and-examples/
upvoted 4 times

  avramov 3 months, 4 weeks ago


isnt it the
second box 'Test' because the Substring states starting from the 1st symbol and
continuing to the 4th? i. e. lenght of 4
upvoted 1 times

  Mag53 1 month, 2 weeks ago


About comment
avramov: Task is to improve the first query with an alternative query that is
more performant. The SUBSTRING clause in the original query clearly shows that
every Taskname starts with the four letters TASK -> solution is
correct
upvoted 1 times

  cyan 6 days, 3 hours ago


I think the
predicate should be T.TaskName like '%TEST%'
upvoted 1 times

Question #116 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You have a database that contains tables named Customer_CRMSystem and Customer_HRSystem. Both tables use the following structure:

The following records exist in the tables:

Customer_CRMSystem -

Customer_HRSystem -

Records that contain null values for CustomerCode can be uniquely identified by CustomerName.
You need to display distinct customers that appear in both tables.
Which Transact-SQL statement should you run?

A.

B.

C.
D.

E.

F.

G.

H.

Correct Answer: H
To retain the nonmatching information by including nonmatching rows in the results of a join, use a full outer join. SQL Server provides the full
outer join operator,
FULL OUTER JOIN, which includes all rows from both tables, regardless of whether or not the other table has a matching value.
Incorrect Answers:
A: Inner joins return rows only when there is at least one row from both tables that matches the join condition. Inner joins eliminate the rows
that do not match with a row from the other table.
B: INTERSECT returns distinct rows that are output by both the left and right input queries operator.
D: EXCEPT returns distinct rows from the left input query that aren't output by the right input query.
E: UNION specifies that multiple result sets are to be combined and returned as a single result set, but this will not work here as the CustomerID
column values do not match.
F: UNION ALL incorporates all rows into the results. This includes duplicates. If not specified, duplicate rows are removed.
G: A cross join would produce the Cartesian product of the two tables.
References:
https://technet.microsoft.com/en-us/library/ms187518(v=sql.105).aspx

  Dieter 6 months, 3 weeks ago


In my opinion
the correct answer is to use INTERSECT since we only want to see the distinct
customers which are in both tables. or do I misunderstand?
upvoted 8 times

  AshleyLiang 6 months, 2 weeks ago


Agree. The JOINs don't match NULLs but set operators
do.
upvoted 2 times

  imran 4 months, 2 weeks ago


INTERSECT WILL
ONLY GIVE YOU 3 ROW WHICH ARE COMMON IN BOTH TABLES. HOWEVER YOU SHOULD USE
UNION TO BRING ALL THE DISTINCT VALUES FROM BOTH TABLE USING UNION WILL GIV YOU
6 ROWS WHICH IS CORREECT ANSWER. THANKS
upvoted 1 times

  SlazericeQ 1 month, 1 week ago


I think it
depends how u understood the question, which is according my opinion a little
bit confusing. I believe they ask for distinct customers across both tables not
for each table.
upvoted 1 times

  AnsB 1 month ago


the answer is correct. Intersect will miss CUS9
YOSSI
upvoted 1 times

  dragan 5 months, 2 weeks ago


I think
B
upvoted 1 times

  mlourinho 3 months, 3 weeks ago


"distinct
customers that appear in both tables" can have 2 meanings: 1. distinct
customers that appear in both tables 2. distinct customers for each table In
this case, I think they asked "distinct customers for each table"..
upvoted 1 times

  mlourinho 3 months, 3 weeks ago


I was wrong:
the question demands "distinct customers", and with the FULL OUTER JOIN you
don't have that. So the right answer is INTERSECT. Also INTERSECT also
consider the Null Values, and in this case the FULL OUTER JOIN will not consider
those values to connect records (and it should).
upvoted 1 times

  fabzo 3 months, 3 weeks ago


INTERESCT is
the correct answer not sure why this site has mostly incorrect answers. I've
tested this and intersect returns distinct customers that appear in both tables
:/
upvoted 2 times

  flashed 1 month ago


No, intersect gives: NULL Jane CUS1 Roya CUS9 Yossi
UNION gives: NULL Francisco NULL Jane CUS1 Roya CUS2 Jose CUS4 Jack CUS9 Yossi
For me correct anwser is UNION
upvoted 2 times

  gtc108 3 weeks, 3 days ago


INTERSECT will
return values that's distinct from both queries however FULL OUTER JOIN will
return customerID=5 which is not in the HR system with NULL so the answer is
B.
upvoted 1 times

  bzub 1 week ago


INTERSECT is correct, try it yourself: CREATE TABLE
Customer_CRMSystem ( CustomerID INT NOT NULL PRIMARY KEY NONCLUSTERED,
CustomerCode char(4) NULL, CustomerName varchar(50) NOT Null ) CREATE TABLE
Customer_HRSystem ( CustomerID INT NOT NULL PRIMARY KEY NONCLUSTERED,
CustomerCode char(4) NULL, CustomerName varchar(50) NOT Null ) SELECT
c.CustomerCode, c.CustomerName, h.CustomerCode, h.Customername FROM
Customer_CRMSystem c LEFT JOIN Customer_HRSystem h ON c.CustomerCode =
h.CustomerCode AND c.CustomerName = h.CustomerName SELECT CustomerCode,
CustomerName FROM Customer_CRMSystem INTERSECT SELECT CustomerCode,
CustomerName FROM Customer_HRSystem
upvoted 1 times

Question #117 Topic 1

DRAG DROP -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question in this series.
You query a database that includes two tables: Project and Task. The Project table includes the following columns:
The Task table includes the following columns:

You need to find all projects that have at least one task that took more than 50 hours to complete. You must also determine the average duration
of the tasks that took more that took more than 50 hours to complete for each project.
How should you complete the Transact-SQL statement? To answer, drag the appropriate Transact-SQL segments to the correct locations. Each
Transact-SQL segment may be used once, more than once or not at all. You may need to drag the split bar between panes or scroll to view
content.
Select and Place:
Correct Answer:

  M4x 6 months ago


I think the where should be: datediff(hh, t.starttime,
t.endtime) > 50
upvoted 1 times

  Bartek 5 months, 3 weeks ago


I think it can
be both. 1. datediff(hh, t.starttime, t.endtime) > 50 is right answer becouse
datediff is returning value as INT and INT can be compared with ">50" 2.
dateadd(hh, 50, StartTime) > EndTime : logic is right and syntax is quite
good too becouse dateadd function returns datetime value and EndTime is datetime
value too
upvoted 1 times

  mattia_88 4 months, 3 weeks ago


No!
"t.endtime" could be null if the task not yet finished.
upvoted 3 times

  mattia_88 4 months, 3 weeks ago


sorry. is
correct datediff(hh, t.starttime, t.endtime) > 50
upvoted 1 times

  prakash101179 5 months, 2 weeks ago


I think datediff(hh, t.starttime, t.endtime) > 50 is
correct answer. 'dateadd(hh, 50, StartTime) > EndTime' doesnt solve the
purpose because if task starts for ex- at 23 Sep 2019 13:00 pm and took 10
hours to complete (which means finished at 23 Sep 2019 23:00 PM). Above logic
interpret it something like this - '25 Sep 2019 15:00 pm > 23 Sep 2019 23:00
PM' which is not correct in this case.
upvoted 5 times

  AnsB 1 month ago


NO. IF the EndTime is NULL, you will get NULL for
datediff.
upvoted 1 times

  itdoesntmatter 5 months, 2 weeks ago


I would say that the correct answer is: datediff(hh,
t.starttime, t.endtime) > 50. And it is AVG.. never heard about AVR in SQL
server.
upvoted 4 times

Question #118 Topic 1

You have a database named DB1 that contains a temporal table named Sales.Customers.
You need to create a query that returns the credit limit that was available to each customer in DB1 at the beginning of 2017.
Which query should you execute?

A.

B.

C.

D.

Correct Answer: C
AS OF: Returns a table with a rows containing the values that were actual (current) at the specified point in time in the past.
Incorrect Answers:
A, B: CONTAINED IN has two parameters: CONTAINED IN (<start_date_time> , <end_date_time>)
References:
https://docs.microsoft.com/en-us/sql/relational-databases/tables/querying-data-in-a-system-versioned-temporal-table

  Andybug 1 month ago


there as to be a specified year c is wrong
upvoted 1 times

  Andybug 1 month ago


sorry C is correct i didn't look at it
properly
upvoted 1 times
Question #119 Topic 1

DRAG DROP -
You have a table named HumanResources.Employee. You configure the table to use a default history table that contains 10 years of data.
You need to write a query that retrieves the values of the BusinessEntityID and JobTitle fields. You must retrieve all historical data up to January 1,
2017 where the value of the BusinessEntityID column equals 4.
Which four Transact-SQL segments should you use to develop the solution? To answer, move the appropriate Transact-SQL segments to the
answer area and arrange them in the correct order.
Select and Place:

Correct Answer:

References:
https://docs.microsoft.com/en-us/sql/relational-databases/tables/querying-data-in-a-system-versioned-temporal-table
Question #120 Topic 1

You need to create a database object that meets the following requirements:
✑ accepts a product identifies as input
calculates the total quantity of a specific product, including quantity on hand and quantity on order

✑ caches and reuses execution plan


✑ returns a value
✑ can be called from within a SELECT statement
✑ can be used in a JOIN clause
What should you create?

A. a temporary table that has a columnstore index

B. a user-defined table-valued function

C. a memory-optimized table that has updated statistics

D. a natively-complied stored procedure that has an OUTPUT parameter

Correct Answer: B
A table-valued user-defined function can also replace stored procedures that return a single result set. The table returned by a user-defined
function can be referenced in the FROM clause of a Transact-SQL statement, but stored procedures that return result sets cannot.
References:
https://technet.microsoft.com/en-us/library/ms191165(v=sql.105).aspx

Question #121 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You create a table named Products by running the following Transact-SQL statement:

You have the following stored procedure:

You need to modify the stored procedure to meet the following new requirements:
✑ Insert product records as a single unit of work.
✑ Return error number 51000 when a product fails to insert into the database.
✑ If a product record insert operation fails, the product information must not be permanently written to the database.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B

  Ilray 5 months, 3 weeks ago


If after
ROLLBACK TRANSACTION put a semicolon then A is correctly
upvoted 7 times

  Bartek 5 months, 3 weeks ago


No. Becouse
Xact_Abort is set to "ON" at the begining and when somethink II go wrong then
error information II not skip to Catch block
upvoted 1 times

  Bartek 5 months, 3 weeks ago


XACT_ABORT
behaves differently when used in a TRY block. Instead of terminating the
transaction as it does in unstructured error handling, XACT_ABORT transfers
control to the CATCH block, and as expected, any error is fatal.
upvoted 2 times

  MarcusJB 1 week, 5 days ago


I'm not sure, if this question is maybe really about the
semicolon. In the book to this course exactly this scenario won't work because
of the missing semicolon. SQL Server would try to rollback a transaction named
"THROW", which obviously doesn't exist. So if being exact the correct answer
would really be "No" even if the rest works fine in my eyes.
upvoted 1 times

  Scooter123 4 months ago


I think it met the goal like llray said, tested OK by my
side, the XACT_STATE() is -1, so there is a rollbackable transaction, the
ROLLBACK transaction works fine.
upvoted 2 times

  avramov 3 months, 4 weeks ago


i think NO,
because if there is an error, because xact_abort is on, the tran is already
rolled back because of this option ON. there is no need to roll back it
again
upvoted 1 times

  Jiacheng 3 weeks, 4 days ago


xact_abort in
try_catch block works different, if there is somethign wrong in try block, and
we set xact_abort to ON, then we need to rollback manually, if don't use
try_catch, it can be rollback automatically
upvoted 1 times

  mlourinho 3 months, 3 weeks ago


The answer A
with the semicolon works fine. IF OBJECT_ID('DISTRICTS') IS NOT NULL DROP TABLE
DISTRICTS; CREATE TABLE DISTRICTS( ID_District INT IDENTITY , DistrictName
VARCHAR(255) NOT NULL , City VARCHAR(2) ); INSERT INTO DISTRICTS(DistrictName)
VALUES('London') -- SELECT * FROM DISTRICTS IF EXISTS(SELECT 1 FROM SYSOBJECTS
WHERE NAME = 'InsertDistrict') DROP PROCEDURE InsertDistrict GO CREATE PROCEDURE
InsertDistrict @DistrictName VARCHAR(255) , @City VARCHAR(255) AS BEGIN SET
XACT_ABORT ON BEGIN TRY BEGIN TRANSACTION INSERT INTO DISTRICTS(DistrictName,
City) VALUES( @DistrictName, @City ) COMMIT TRANSACTION END TRY BEGIN CATCH
IF XACT_STATE() <> 0 ROLLBACK TRANSACTION; THROW 51000, 'O registo is
wrong.', 1; END CATCH END GO EXEC InsertDistrict 'London',
'Reading'
upvoted 4 times

  mlourinho 3 months, 3 weeks ago


XACT_STATE Is
a scalar function that reports the user transaction state of a current running
request. IF (XACT_STATE()) = -1 -- If -1, the transaction is uncommittable and
should be rolled back. IF (XACT_STATE()) = 1 -- If 1, the transaction is
committable. IF (XACT_STATE()) = 0 -- XACT_STATE = 0 means there is no
transaction and a commit or rollback operation would generate an
error.
upvoted 1 times

Question #122 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You create a table named Products by running the following Transact-SQL statement:

You have the following stored procedure:

You need to modify the stored procedure to meet the following new requirements:
✑ Insert product records as a single unit of work.
✑ Return error number 51000 when a product fails to insert into the database.
✑ If a product record insert operation fails, the product information must not be permanently written to the database.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B

  Bartek 5 months, 3 weeks ago


do not know
why this should not work. @@TRANCOUNT is equal to 1 in case of error occurs.
Only thing is that the ErrorMsg is not assigned to 51000 ErrorId...
upvoted 2 times

  mattia_88 4 months, 3 weeks ago


THE CORRECT
ANSWER IS "A" ("YES"). BUT BEFORE YOU MUST CREATED MESSAGE WITH CODE 51000
(SP_ADDMESSAGE 51000,16,'ERROR')
upvoted 1 times

  raja1234567890 3 months, 4 weeks ago


By defaut XABORT will be OFF.
https://docs.microsoft.com/en-us/sql/t-sql/statements/set-xact-abort-transact-sql?view=sql-server-ver15
upvoted 1 times

  Jiacheng 3 weeks, 3 days ago


@@TRANCOUNT>0 cannot make sure that all error would
go to CATCH block, check the following code, I add string to int on purpose, it
can't trigger catch block CREATE TABLE #Products( ProductID INT IDENTITY NOT
NULL PRIMARY KEY, productName VARCHAR(100) NULL, UnitPrice DECIMAL(18,2) NOT
NULL, UnitInStock INT NOT NULL, UnitsOnOrder INT NULL ) CREATE PROC
InsertProduct @ProductName varchar(100), @UnitPrice decimal(18,2), @UnitsInStock
int, @UnitsOnOrder INT AS BEGIN BEGIN TRY BEGIN TRANSACTION INSERT INTO
#Products (productName,UnitPrice,UnitInStock,UnitsOnOrder) VALUES
(@ProductName,@UnitPrice,@UnitsInStock,@UnitsOnOrder) COMMIT TRANSACTION END
TRY BEGIN CATCH IF @@TRANCOUNT>0 ROLLBACK TRANSACTION RAISERROR(51000,16,1)
END CATCH END EXEC InsertProduct 'Book',30,'LOL',3 SELECT * FROM
#Products
upvoted 2 times

Question #123 Topic 1


You have a database that contains the following tables:

Customer -

CustomerAudit -

Where the value of the CustomerID column equals 3, you need to update the value of the CreditLimit column to 1000 for the customer. You must
ensure that the change to the record in the Customer table is recorded on the CustomerAudit table.
Which Transact-SQL statement should you run?

A. Option A

B. Option B

C. Option C

D. Option D

Correct Answer: A
The OUTPUT Clause returns information from, or expressions based on, each row affected by an INSERT, UPDATE, DELETE, or MERGE
statement. These results can be returned to the processing application for use in such things as confirmation messages, archiving, and other
such application requirements. The results can also be inserted into a table or table variable. Additionally, you can capture the results of an
OUTPUT clause in a nested INSERT, UPDATE, DELETE, or MERGE statement, and insert those results into a target table or view.
Note: If the column modified by the .RITE clause is referenced in an OUTPUT clause, the complete value of the column, either the before image
in deleted.column_name or the after image in inserted.column_name, is returned to the specified column in the tablevariable.
Incorrect Answers:
D: The deleted.Creditlimit should be inserted in the second column, the OldCreditLimit column, not the third column.
References:
https://msdn.microsoft.com/en-us/library/ms177564.aspx
  Dieter 6 months, 3 weeks ago
No, I think
the correct answer is B since the OUTPUT parameters do not fit the insert into
parameters. in addition, the inserted values are incorrect (deleted for both old
and new credit limit)
upvoted 21 times

  okh 5 months, 2 weeks ago


B is
correct
upvoted 5 times

  fabzo 3 months, 2 weeks ago


B is
correct,
upvoted 1 times

  gtc108 3 weeks ago


B is the correct answer.
upvoted 1 times

  supermario 5 days, 7 hours ago


B is correct
and straightforward.
upvoted 1 times

Question #124 Topic 1

You have a database for a banking system. The database has two tables named tblDepositAcct and tblLoanAcct that store deposit and loan
accounts, respectively. Both tables contain the following columns:
You need to determine the total number of customers who have only deposit accounts.
Which Transact-SQL statement should you run?

A. Option A

B. Option B

C. Option C

D. Option D

E. Option E

F. Option F

G. Option G

H. Option H

Correct Answer: F
References:
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/set-operators-except-and-intersect-transact-sql?view=sql-server-2017

  flashed 1 month ago


Can't see the all answer, but if there is any with
except, is the one i choose
upvoted 2 times

  jpdvm 2 weeks, 5 days ago


None of the
answers are correct. The except does not filter out duplicates in tblDepositAcct
(needs distinct), so count(*) would be wrong.
upvoted 1 times

  anonimdom 1 week, 6 days ago


The except DOES filter out duplicates.
upvoted 1 times
  Jiacheng 3 weeks, 3 days ago
F is SELECT
COUNT(*) FROM (SELECT CustNo FROM tblDepositAcct EXCEPT SELECT CustNo FROM
tblLoanAcct) R
upvoted 2 times

  gtc108 3 weeks ago


Answer: E Explanation: The RIGHT JOIN keyword returns
all records from the right table (table2), and the matched records from the left
table (table1). The result is NULL from the left side, when there is no
match.
upvoted 1 times

  Andi64 2 weeks, 4 days ago


E is wrong,
because the right table is loanAcc and we are looking for DepositAcct
upvoted 2 times

Question #125 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a table named Products that stores information about products your company sells. The table has a column named ListPrice that stores
retail pricing information for products.
Some products are used only internally by the company. Records for these products are maintained in the Products table for inventory purposes.
The price for each of these products is $0.00. Customers are not permitted to order these products.
You need to increase the list price for products that cost less than $100 by 10 percent. You must only increase pricing for products that customers
are permitted to order.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B
Mathematical equation will only return 10 % of the value.

  flashed 1 month ago


I can't see none filter for "You must only increase
pricing for products that customers are permitted to order."
upvoted 1 times

  anonimdom 3 weeks, 6 days ago


But 0*.1=0, so
the price of the 0$ products will not be increased (which may meet the
requirements).
upvoted 2 times

  70_761 3 weeks, 4 days ago


0 price
products are not permitted, So their price will not get updated when we
multiply. So we have to multiply by 1.1
upvoted 1 times

  supermario 5 days, 7 hours ago


How does this
even test anything in SQL. Why are we tested in mathematics. I see so many
queries in list price increase. None is really correct. or the question is
ambiguous.
upvoted 1 times

Question #126 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a table that was created by running the following Transact-SQL statement:

The Products table includes the data shown in the following table:

TotalUnitPrice is calculated by using the following formula:


TotalUnitPrice = UnitPrice * (UnitsInStock + UnitsOnOrder)
You need to ensure that the value returned for TotalUnitPrice for ProductB is equal to 600.00.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B

  Gogiano 1 month, 1 week ago


NULL should be
0
upvoted 3 times

  Andi64 2 weeks, 4 days ago


unfortunately
no. Select 20+NULL will result NULL
upvoted 1 times

  supermario 5 days, 6 hours ago


be careful
with a similar question where NULL is replaced by 0 correctly. Watch out
carefully
upvoted 1 times

Question #127 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You create a table named Customer by running the following Transact-SQL statement:
You must insert the following data into the Customer table:

You need to ensure that both records are inserted or neither record is inserted.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B
Reference:
https://docs.microsoft.com/it-it/sql/t-sql/statements/insert-transact-sql?view=sql-server-2017

Currently there are no comments in this discussion, be the first to comment!

Question #128 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database that contains a single table named tblVehicleRegistration. The table is defined as follows:

You run the following query:

The query output window displays the following error message: "Conversion failed when converting the varchar value "˜AB012' to data type int."
You need to resolve the error.
Solution: You modify the Transact-SQL statement as follows:

Does the solution meet the goal?

A. Yes

B. No
Correct Answer: B
https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017

  Dieter 6 months, 3 weeks ago


IMO the
correct answer is A since the data type of the RegistrationNumber = varchar(5)
and the predicate value is explicitely casted as well to varchar(5), thus no
errors should occur
upvoted 9 times

  AshleyLiang 6 months, 2 weeks ago


Agree.
upvoted 4 times

  okh 5 months, 2 weeks ago


Agree A is
correct. Tested DROP TABLE IF EXISTS tblVehicleRegistration CREATE TABLE
tblVehicleRegistration ( VehicleID int, RegistrationNumber varchar(5),
RegistrationDate date, UserId int ) INSERT INTO tblVehicleRegistration
VALUES (1,'20012', GETDATE(),1) SELECT UserId FROM tblVehicleRegistration
WHERE RegistrationNumber = CAST(20012 AS varchar(5)) AND RegistrationDate >
'2016-01-01'
upvoted 5 times

  fabzo 3 months, 2 weeks ago


B is correct
as the from DB needs to come after the cast function
upvoted 2 times

  supermario 5 days, 6 hours ago


no. There is a
FROM clause in first line. A is correct
upvoted 1 times

  New_user 2 months, 2 weeks ago


B is correct.
Despite solution fixed reg. number's problem, the date still must be
converted
upvoted 1 times

  MarcusJB 1 week, 5 days ago


No, because '2016-01-01' will be implicitly and
correctly converted to the datatype DATE. Solution tested on SQL Server 2016.
Answer A is correct.
upvoted 1 times

  gtc108 1 month ago


Place literal quotes '12345' and it will work.
upvoted 1 times

Question #129 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database that contains a single table named tblVehicleRegistration. The table is defined as follows:

You run the following query:


The query output window displays the following error message: "Conversion failed when converting the varchar value "˜AB012' to data type int."
You need to resolve the error.
Solution: You modify the Transact-SQL statement as follows:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B

  Dieter 6 months, 3 weeks ago


the correct
answer shouuld be A since the int is implicitey casted by the ' '.
upvoted 9 times

  okh 5 months, 2 weeks ago


the correct
answer is A
upvoted 7 times

Question #130 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database that contains a single table named tblVehicleRegistration. The table is defined as follows:

You run the following query:

The query output window displays the following error message: "Conversion failed when converting the varchar value "˜AB012' to data type int."
You need to resolve the error.
Solution: You modify the Transact-SQL statement as follows:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B

  supermario 5 days, 6 hours ago


The conversion
error happens in Registration Number which is not fixed. Registration date
doesnt matter here
upvoted 1 times

Question #131 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a table named Products that stores information about products your company sells. The table has a column named ListPrice that stores
retail pricing information for products.
Some products are used only internally by the company. Records for these products are maintained in the Products table for inventory purposes.
The price for each of these products is $0.00. Customers are not permitted to order these products.
You need to increase the list price for products that cost less than $100 by 10 percent. You must only increase pricing for products that customers
are permitted to order.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: A
Reference:
https://docs.microsoft.com/en-us/sql/t-sql/queries/update-transact-sql?view=sql-server-2017

  supermario 5 days, 6 hours ago


This is the
only correct list price increase query. listprice=list price*1.1
upvoted 1 times

Question #132 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a table named Products that stores information about products your company sells. The table has a column named ListPrice that stores
retail pricing information for products.
Some products are used only internally by the company. Records for these products are maintained in the Products table for inventory purposes.
The price for each of these products is $0.00. Customers are not permitted to order these products.
You need to increase the list price for products that cost less than $100 by 10 percent. You must only increase pricing for products that customers
are permitted to order.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes
B. No

Correct Answer: B

  supermario 5 days, 6 hours ago


I reason out
that Between is an inclusive operator. 100 dollar product also gets increased as
against in question which is less than 100 dollar.
upvoted 1 times

Question #133 Topic 1

DRAG DROP -
You have a database that contains a table named Users. The table is defined as follows:

You have the following Comma Separated Values (CSV) file:

You need to load data from the CSV file into the Users table while meeting the following requirements:
✑ If a field value is not provided in the file, insert a NULL value for the corresponding column
✑ Load all records into the table with the correct UserId from the file
Which three Transact-SQL segments should you use to develop the solution? To answer, move the appropriate Transact-SQL segments from the
list of Transact-
SQL segments to the answer area and arrange them in the correct order.
Select and Place:

Correct Answer:

Reference:
https://docs.microsoft.com/en-us/sql/t-sql/functions/openrowset-transact-sql?view=sql-server-2017
  M4x 6 months ago
Wrong! bulk insert users from N'F:\users.txt' with (
fieldterminator = ',', keepidentity, keepnulls ) keepnulls because otherwise
all records with null became active (there are a default on IsActive
column)
upvoted 10 times

  okh 5 months, 2 weeks ago


Agree,
tested
upvoted 2 times

Question #134 Topic 1

You have a database named DB1 that contains a temporal table named Sales.Customers.
You need to create a query that returns the credit limit that was available to each customer in DB1 at the beginning of 2017.
Which query should you execute?

A.

B.

C.

D.

Correct Answer: Answer: B


AS OF: Returns a table with a rows containing the values that were actual (current) at the specified point in time in the past.
Incorrect Answers:
A, B: CONTAINED IN has two parameters: CONTAINED IN (<start_date_time> , <end_date_time>)
References:
https://docs.microsoft.com/en-us/sql/relational-databases/tables/querying-data-in-a-system-versioned-temporal-table

Question #135 Topic 1


Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You have a database that contains several connected tables. The tables contain sales data for customers in the United States only.
You need to create a query that generates sample data for a sales table in the database. The query must include every product in the inventory for
each customer.
Which statement clause should you use?

A. GROUP BY

B. MERGE

C. GROUP BY ROLLUP

D. LEFT JOIN

E. GROUP BY CUBE

F. CROSS JOIN

G. PIVOT

H. UNPIVOT

Correct Answer: C
Reference:
https://docs.microsoft.com/en-us/sql/t-sql/queries/select-group-by-transact-sql?view=sql-server-2017

  Dieter 6 months, 3 weeks ago


According to
the hints "each product for each customer" it seems to be a Cartesian product
required here. Agree?
upvoted 12 times

  supermario 5 days, 6 hours ago


Agreee. The
key words every product every customer directs you to CROSS JOIN. To generate
test data. Nothing to think much.
upvoted 1 times

  safiullah 6 months, 3 weeks ago


I also agree
with Dieter. This seems that each product of each customer. Seems like a
cartesian product and therefore a cross join.
upvoted 6 times

  raja1234567890 3 months, 4 weeks ago


I agree with Dieter.
upvoted 1 times

  Jiacheng 3 weeks, 3 days ago


I think the
answer is correct, because you don't know if there is aggregation function for
Customer, only use Cross Join cannot make sure on that. but grouping rollup,
even if they are unique records, still does't affect
upvoted 1 times

Question #136 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You have a database that contains several connected tables. The tables contain sales data for customers in the United States only.
All the sales data is stored in a table named table1. You have a table named table2 that contains city names.
You need to create a query that lists only the cities that have no sales.
Which statement clause should you add to the query?
A. GROUP BY

B. MERGE

C. GROUP BY ROLLUP

D. LEFT JOIN

E. GROUP BY CUBE

F. CROSS JOIN

G. PIVOT

H. UNPIVOT

Correct Answer: D
Reference:
https://docs.microsoft.com/en-us/sql/t-sql/queries/from-transact-sql?view=sql-server-2017

Question #137 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You have a database that contains several connected tables. The tables contain sales data for customers in the United States only.
You have the following partial query for the database. (Line numbers are included for reference only.)

You need to complete the query to generate the output shown in the following table.

Which statement clause should you add at line 3?

A. GROUP BY

B. MERGE

C. GROUP BY ROLLUP

D. LEFT JOIN

E. GROUP BY CUBE

F. CROSS JOIN

G. PIVOT

H. UNPIVOT

Correct Answer: A

  fabzo 3 months, 2 weeks ago


Would this be
Group by totalsales?
upvoted 1 times

  Mag53 1 month, 2 weeks ago


GROUP BY
CityName
upvoted 2 times
  Prides 1 month ago
this is not an aggregate function, so should be left
join
upvoted 1 times

  Jiacheng 3 weeks, 3 days ago


no, group by
can be used in non-aggregation statement. and in this case, you can easily find
out that CITYs are unique, so absolutely they must group by name, city, price
and so on
upvoted 1 times

Question #138 Topic 1

Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question in this series.
You query a database that includes two tables: Project and Task. The Project table includes the following columns:

The Task table includes the following columns:

You plan to run the following query to update tasks that are not yet started:
UPDATE Task SET StartTime = GETDATE() WHERE StartTime IS NULL
You need to return the total count of tasks that are impacted by this UPDATE operation, but are not associated with a project.
What set of Transact-SQL statements should you run?

A.

B.

C.

D.

E.

F.

Correct Answer: B
  mlourinho 3 months, 3 weeks ago
Actually, F is
also right
upvoted 5 times

  Prides 1 month ago


tested on computer, both B F are right
upvoted 1 times

  Jiacheng 3 weeks, 3 days ago


Yes, both B
and F give same result, because 1 record insert, 1 record delete. But I think
the author wants us to find out which records is affacted before after updating.
so B is more correct
upvoted 1 times

  Andi64 2 weeks, 3 days ago


A) is also
working fine
upvoted 1 times

  MarcusJB 1 week, 5 days ago


No, because it says "WHERE ProjectID is not null" which
is the complete opposite. Just B and F work fine.
upvoted 1 times

Question #139 Topic 1

You have a database named DB1 that contains a temporal table named Sales.Customers.
You need to create a query that returns the credit limit that was available to each customer in DB1 at the beginning of 2017.
Which query should you execute?

A.

B.

C.

D.
Correct Answer: B
AS OF: Returns a table with a rows containing the values that were actual (current) at the specified point in time in the past.
Incorrect Answers:
A, B: CONTAINED IN has two parameters: CONTAINED IN (<start_date_time> , <end_date_time>)
References:
https://docs.microsoft.com/en-us/sql/relational-databases/tables/querying-data-in-a-system-versioned-temporal-table

Question #140 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You create a table by running the following Transact-SQL statement:

You are developing a report that aggregates customer data only for the year 2014. The report requires that the data be denormalized.
You need to return the data for the report.
Which Transact-SQL statement should you run?

A.

B.

C.

D.

E.

F.
G.

H.

Correct Answer: G

  Tr4ckz 5 months ago


IMO this should be D, as denormalized results are
required (Pivot) and as well aggregated results, whicha re not provided with the
given answer G.
upvoted 7 times

  Andybug 1 month ago


G is wrong i think D is correct
upvoted 2 times

  Prides 1 month ago


the answer is CORRECT. it met the system_time
period
upvoted 1 times

Question #141 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You create a table by running the following Transact-SQL statement:

You need to return normalized data for all customers that were added in the year 2014.
Which Transact-SQL statement should you run?

A.

B.
C.

D.

E.

F.

G.

H.

Correct Answer: G

  Bartek 5 months, 2 weeks ago


The closest
II be D -- statement with Pivot
upvoted 1 times

  Tr4ckz 5 months ago


if you compare it to #140 you'll find that D fits rather
for the previous question. G seems to be fitting here (normalized data, not
aggregated, 2014)
upvoted 2 times

  mlourinho 3 months, 3 weeks ago


The question
explicit "all customers that were added in the year 2014", therefore
Year(DateCreated) = 2014
upvoted 1 times

  New_user 2 months, 2 weeks ago


Answer D is
returning DEnormalized data using pivot, so it's wrong. G selects all data
inserted, but NOT created in 2014. The only adorable answer is H
upvoted 3 times

  Prides 1 month ago


NOT H. if the dateCreated is 20141231, then H will miss
those. Still G.
upvoted 1 times

  Ondaenergetica 2 weeks, 4 days ago


FROM/
AND would exclude them . BETWEEN /AND would not .
upvoted 1 times

  Ondaenergetica 2 weeks, 4 days ago


In
addition Data in G is oviously NOT normalized
upvoted 1 times
  anonimdom 1 week, 6 days ago
20141231 = 20141231 0:00. It will not exclude 20141231
0:00, but will exclude 20141231 0:01 and everything after it.
upvoted 1 times

  MarcusJB 1 week, 5 days ago


Yes, regarding the last day in the year 2014 I'm with
you, anonimdom, but the question is about the creation date, not the valid
period. That's a big difference. The data could be corrected (e.g. typo in name)
in 2016 but the customer was still created in 2014. And being completely
precise: the end date in G is also not completely conform to the question
because '2015-01-01 00:00:00.000000' is obviously not in 2014, right? ;-) So I
would come to the result, that H is the nearest correct answer, but also no 100%
solution.
upvoted 1 times

Question #142 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You run the following Transact-SQL statement:

You need to return the total annual revenue for all customers, followed by a row for each customer that shows the customer's name and annual
revenue.
Which Transact-SQL statement should you run?

A.

B.

C.

D.

E.
F.

G.

H.

Correct Answer: A

Question #143 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You create a table by running the following Transact-SQL statement:

You need to develop a query that meets the following requirements:


✑ Output data by using a tree-like structure.
Allow mixed content types.

✑ Use custom metadata attributes.


Which Transact-SQL statement should you run?

A.

B.

C.
D.

E.

F.

G.

H.

Correct Answer: F

  gtc108 2 weeks, 5 days ago


This question
needs more context. Both XML and JSON are tree-like structures.
upvoted 2 times

  anonimdom 1 week, 6 days ago


But what about: Allow mixed content types. ✑ Use custom
metadata attributes?
upvoted 1 times

Question #144 Topic 1

You need to create a database object that meets the following requirements:
✑ accepts a product identifies as input
✑ calculates the total quantity of a specific product, including quantity on hand and quantity on order
✑ caches and reuses execution plan
✑ returns a value
✑ can be called from within a SELECT statement
✑ can be used in a JOIN clause
What should you create?

A. an extended stored procedure

B. a user-defined table-valued function

C. a user-defined stored procedure that has an OUTPUT parameter

D. a memory-optimized table that has updated statistics

Correct Answer: B
References:
https://www.techrepublic.com/blog/the-enterprise-cloud/understand-when-to-use-user-defined-functions-in-sql-server/

  raf77 6 months, 1 week ago


Probably typo
in text. The correct answer to this question: a user-defined scalar
function
upvoted 2 times

  Bartek 5 months, 2 weeks ago


No. "..can be
used in a JOIN clause.." Scalar UDF cannot be used in Join
upvoted 7 times

Question #145 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You are building a stored procedure that will be used by hundreds of users concurrently.
You need to store rows that will be processed later by the stored procedure. The object that stores the rows must meet the following
requirements:
✑ Be indexable
✑ Contain up-to-date statistics
✑ Be able to scale between 10 and 100,000 rows
The solution must prevent users from accessing one another's data.
Solution: You create a global temporary table in the stored procedure.
Does this meet the goal?

A. Yes

B. No

Correct Answer: A

  Abhilash_KK 6 months ago


it
is mentioned "The solution must prevent users from accessing one another’s
data.". So should it be local temporary table?
upvoted 6 times

  Jiacheng 3 weeks, 3 days ago


I think global
temp table can still make it. don't forget you are using it in SP, user can only
exec sp, they don't know what inside the SP, and maybe they'll check permernent
tables or views, but when you close the session where you create global temp
table, the global temp table will gone.
upvoted 1 times

  fabzo 3 months, 2 weeks ago


True users
would be able to access each other data with a global temp table. Is there a
better explanation?
upvoted 1 times

  moehijawe 2 months ago


There are two types of temporary tables: local and
global. Local temporary tables are visible only to their creators during the
same connection to an instance of SQL Server as when the tables were first
created or referenced. Local temporary tables are deleted after the user
disconnects from the instance of SQL Server. Global temporary tables are visible
to any user and any connection after they are created, and are deleted when all
users that are referencing the table disconnect from the instance of SQL
Server.
upvoted 3 times

Question #146 Topic 1


Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You are building a stored procedure that will be used by hundreds of users concurrently.
You need to store rows that will be processed later by the stored procedure. The object that stores the rows must meet the following
requirements:
✑ Be indexable
✑ Contain up-to-date statistics
✑ Be able to scale between 10 and 100,000 rows
The solution must prevent users from accessing one another's data.
Solution: You create a local temporary table in the stored procedure.
Does this meet the goal?

A. Yes

B. No

Correct Answer: B

  Abhilash_KK 6 months ago


it
is mentioned "The solution must prevent users from accessing one another’s
data.". So should it be local temporary table?
upvoted 8 times

  mattia_88 4 months, 3 weeks ago


YES, no global
temporary table
upvoted 3 times

  moehijawe 2 months ago


There are two types of temporary tables: local and
global. Local temporary tables are visible only to their creators during the
same connection to an instance of SQL Server as when the tables were first
created or referenced. Local temporary tables are deleted after the user
disconnects from the instance of SQL Server. Global temporary tables are visible
to any user and any connection after they are created, and are deleted when all
users that are referencing the table disconnect from the instance of SQL
Server.
upvoted 1 times

  ivanbtod 1 month, 3 weeks ago


I think it's
NO, hint 'contain up to date statistics'
upvoted 1 times

  MarcusJB 1 week, 4 days ago


But temporary temp tables can have indexes and
statistics like any other table.
upvoted 1 times

Question #147 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You are building a stored procedure that will be used by hundreds of users concurrently.
You need to store rows that will be processed later by the stored procedure. The object that stores the rows must meet the following
requirements:
✑ Be indexable
✑ Contain up-to-date statistics
✑ Be able to scale between 10 and 100,000 rows
The solution must prevent users from accessing one another's data.
Solution: You create a table variable in the stored procedure.
Does this meet the goal?

A. Yes

B. No

Correct Answer: B

Question #148 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You are creating indexes in a data warehouse.
You have a dimension table named Table1 that has 10,000 rows. The rows are used to generate several reports.
The reports join a column that is the primary key.
The execution plan contains bookmark lookups for Table1.
You discover that the reports run slower than expected.
You need to reduce the amount of time it takes to run the reports.
Solution: You create a hash index on the primary key column.
Does this meet the goal?

A. Yes

B. No

Correct Answer: B
Reference:
https://msdn.microsoft.com/en-us/library/dn133190.aspx

Question #149 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You are creating indexes in a data warehouse.
You have a dimension table named Table1 that has 10,000 rows. The rows are used to generate several reports.
The reports join a column that is the primary key.
The execution plan contains bookmark lookups for Table1.
You discover that the reports run slower than expected.
You need to reduce the amount of time it takes to run the reports.
Solution: You create a clustered index on the primary key column.
Does this meet the goal?

A. Yes

B. No

Correct Answer: A
  raja1234567890 3 months, 3 weeks ago
If primary key is created, then clustered index is
already created. if report is running slow while joining with primary key. How
does performance improve when index is recreated.
upvoted 3 times

  fabzo 3 months, 2 weeks ago


Needs to be
nonclustered
upvoted 1 times

Question #150 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You are creating indexes in a data warehouse.
You have a dimension table named Table1 that has 10,000 rows. The rows are used to generate several reports.
The reports join a column that is the primary key.
The execution plan contains bookmark lookups for Table1.
You discover that the reports run slower than expected.
You need to reduce the amount of time it takes to run the reports.
Solution: You create a nonclustered index on the primary key column that includes the bookmark lookup columns.
Does this meet the goal?

A. Yes

B. No

Correct Answer: B

  flashed 4 weeks, 1 day ago


Why can't? I think that should be A. Yes.
upvoted 1 times

  MarcusJB 1 week, 4 days ago


I'd also say that it should at least be faster than
before because the query doesn't have to read data from the table itself but
just from the index. As far as there are not so many columns to include this
could be a possible option to gain performance.
upvoted 1 times

  supermario 5 days, 5 hours ago


yes. this is
A. Yes the answer for previous would be NO. The data comes directly from the
Index
upvoted 1 times

Question #151 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database named DB1 that contains two tables named Sales.Customers and Sales.Orders. Sales.Customers has a foreign key
relationship to a column named CustomerID in SalesOrders.
You need to recommend a query that returns all the customers. The query must also return the number of orders that each customer placed in
2016.
Solution: You recommend the following query:

Does this meet the goal?

A. Yes

B. No

Correct Answer: B
Reference:
https://docs.microsoft.com/en-us/sql/t-sql/functions/count-transact-sql?view=sql-server-2017

  raja1234567890 3 months, 3 weeks ago


Can select query contains = symbol?
upvoted 1 times

  blueday 2 weeks, 6 days ago


yes it
can
upvoted 1 times

Question #152 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database named DB1 that contains two tables named Sales.Customers and Sales.Orders. Sales.Customers has a foreign key
relationship to a column named CustomerID in Sales.Orders.
You need to recommend a query that returns all the customers. The query must also return the number of orders that each customer placed in
2016.
Solution: You recommend the following query:

Does this meet the goal?

A. Yes

B. No

Correct Answer: A

  Dieter 6 months, 3 weeks ago


Is this
correct? It does not fullfill the requirement "The query must also return the
number of orders that each customer placed in 2016." => where is the filter
to 2016?
upvoted 3 times

  Dieter 6 months, 3 weeks ago


Additionally, the ON clause is not correct comparing
customerid and orderid
upvoted 2 times

  fe 2 months, 4 weeks ago


Additionally,
for customers with no orders, there will be a count of 1 because of the left
join
upvoted 1 times

  safiullah 6 months, 3 weeks ago


Also what I
see wrong is that the "join" predicate is comparing with the wrong column i.e.
"order id" and not "customer_id"
upvoted 1 times

  AshleyLiang 6 months, 2 weeks ago


Agree. However, it seems the topic concerned here is the
difference between COUNT(*) and COUNT(CustomerID).
upvoted 2 times

  dragan 5 months, 2 weeks ago


Answer is
No
upvoted 2 times

  mlourinho 3 months, 3 weeks ago


We can read in
the question "Sales.Customers has a foreign key relationship to a column named
CustomerID in Sales.Orders.". So it cannot be "ON Cust.CustomerID =
Ord.OrderID"
upvoted 1 times

  Andybug 1 month ago


this is wrong it must comply with the year
upvoted 1 times

  cyan 4 days, 5 hours ago


The answer is
No. The right query is: SELECT Cust.CustName, NumberOfOrder =
COUNT(ORD.CUSTOMERID) FROM Sales.Customers Cust LEFT JOIN (SELECT * FROM
Sales.Orders WHERE YEAR(orderdate)=2016) Ord ON Cust.CustomerID=Ord.CustomerID
GROUP BY Cust.CustomerName;
upvoted 1 times

Question #153 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database named DB1 that contains two tables named Sales.Customers and Sales.Orders. Sales.Customers has a foreign key
relationship to a column named CustomerID in Sales.Orders.
You need to recommend a query that returns all the customers. The query must also return the number of orders that each customer placed in
2016.
Solution: You recommend the following query:

Does this meet the goal?

A. Yes

B. No

Correct Answer: B

  avramov 3 months, 4 weeks ago


wrong answer,
the query counts corectly, the only suspicious thing is the ON clause with c.
cust=o. ord. id. Should be c. custid=o. custid
upvoted 2 times

  mlourinho 3 months, 2 weeks ago


The question
demands: "orders that each customer placed in 2016".
upvoted 3 times

Question #154 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database that contains a single table named tblVehicleRegistration. The table is defined as follows:

You run the following query:

The query output window displays the following error message: "Conversion failed when converting the varchar value "˜AB012' to data type int."
You need to resolve the error.
Solution: You modify the Transact-SQL statement as follows:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: A
  Dieter 6 months, 3 weeks ago
IMO is the
correct answer B since it can occur taht the RegistrationNumber holds
alphanumerical data (due to that it holds the data type varchar(5))
upvoted 8 times

  avramov 3 months, 4 weeks ago


but in this
paticular case they ask us to cast 20012 and this is just a number
upvoted 1 times

  mlourinho 3 months, 2 weeks ago


IF
OBJECT_ID('TEMPDB..#tblVehicleRegistration') IS NOT NULL DROP TABLE
#tblVehicleRegistration GO CREATE TABLE #tblVehicleRegistration (
VehicleID INT PRIMARY KEY IDENTITY , RegistrationNumber VARCHAR(5) ,
RegistrationDate DATE , UserID INT ) GO INSERT INTO
#tblVehicleRegistration(RegistrationNumber, RegistrationDate, UserID)
VALUES ('XBP01', GETDATE(), 1) , ('ABC45', GETDATE(), 2) SELECT UserID
FROM #tblVehicleRegistration WHERE CAST(RegistrationNumber AS INT) = 20012 AND
RegistrationDate > '2016-01-01'
upvoted 2 times

  safiullah 6 months, 3 weeks ago


It will not
work because CAST tries to do the same implicit conversion explicitly which was
failing and it will fail again because there are 'letters' inside the
RegistrationNumber column which can not be converted to an int type. So the
correct answer is no.
upvoted 6 times

Question #155 Topic 1

You have a database that includes the tables shown in the exhibit. (Click the exhibit button.)

You need to create a list of all customers and the date that the customer placed their last order. For customers who have not placed orders, you
must substitute
01/01/1990 for the date.
Which Transact-SQL statement should you run?
A.

B.

C.

D.

Correct Answer: A

  supermario 5 days, 5 hours ago


A is correct
if the date in 19900101
upvoted 1 times

Question #156 Topic 1

HOTSPOT -
You need to develop a function that returns a list of courses grouped by the total number of students in a course.
The function must list only courses that have more than a specific number of students. The specific number of students is defined as an input
variable for the function.
How should you complete the function? To answer, select the appropriate Transact-SQL segments in the answer area.
NOTE: Each correct selection is worth one point.
Hot Area:
Correct Answer:

  Dieter 6 months, 3 weeks ago


why is in the
second dropdown not the secondlast option chosen? shouldn't there be an alias
for the column?
upvoted 1 times

  AshleyLiang 6 months, 2 weeks ago


An aggregation column with an alias is acceptable but
yes, specifying an alias is considered best practice.
upvoted 2 times

  Dieter 6 months, 3 weeks ago


Update: in
addition, answer of Box 3 must be HAVING, since where does not allow aggregate
functions
upvoted 7 times

  prakash101179 5 months, 2 weeks ago


'Group by' is missing as well.
upvoted 5 times

  fabzo 3 months, 2 weeks ago


I agree where
cannot be used. Should be having
upvoted 1 times

  fabzo 3 months, 2 weeks ago


Missing alias
as well
upvoted 1 times

  Andybug 1 month ago


having is correct
upvoted 1 times

Question #157 Topic 1

HOTSPOT -
You develop and deploy a project management application. The application uses a Microsoft SQL Server database to store data. You are
developing a software bug tracking add-on for the application.
The add-on must meet the following requirements:
✑ Allow case sensitive searches for product.
✑ Filter search results based on exact text in the description.
✑ Support multibyte Unicode characters.
You run the following Transact-SQL statement:

Users report that searches for the product Salt also return results for the product salt.
You need to ensure that the query returns the correct results.
How should you complete the Transact-SQL statement? To answer, select the appropriate Transact-SQL segments in the answer area.
NOTE: Each correct selection is worth one point.
Hot Area:

Correct Answer:

References:
https://stackoverflow.com/questions/1831105/how-to-do-a-case-sensitive-search-in-where-clause-im-using-sql-server

Question #158 Topic 1


HOTSPOT -
You are developing a training management application. You run the following Transact-SQL statement:

You must create a report that returns course identifiers and the average evaluation score for each course. The result set must include only one
score for each employee for each course.
How should you complete the Transact-SQL statement? To answer, select the appropriate Transact-SQL segments in the answer area.
NOTE: Each correct selection is worth one point.
Hot Area:

Correct Answer:

  M4x 5 months, 4 weeks ago


The first box
should be DISTINCT CourseId, EmployeeId, EvalScore
upvoted 6 times

  anonimdom 3 weeks, 6 days ago


But, if there
are duplicates like (1,1,1),(1,1,1) the avg value will be 1 anyway. So it looks
like the result with and without distinct will be the same because we calculate
avg (not sum) values.
upvoted 1 times

  ovsg2 1 week, 5 days ago


no, since AVG(1, 1, 1, 2) =/= AVG(1, 2)
upvoted 2 times

  Bert_Bisschop 3 months, 2 weeks ago


I think to meet the condition: "The result set must
include only one score for each employee for each course", EmployeeId must also
be included in the group by clause. Now you only get one score for each
course.
upvoted 3 times
  Jiacheng 3 weeks, 3 days ago
I agree,
otherwise we will only get courseID and AvgCourseScore, which score is for all
employe
upvoted 1 times

Question #159 Topic 1

SIMULATION -
You have a database that contains a table named Products in the Sales schema. The table was created by running the following Transact-SQL
statement:

The table includes the data shown below:

You are developing a report that displays the following values and column headers in the order listed below:
✑ average price of a product named Average
✑ the smallest number of products in stock named LowestNumber
✑ the highest product price named HighestPrice
You need to write a query to return the results for the report. The query must meet the following requirements:
✑ Use built-in, aggregate and mathematical functions.
✑ Use two-part names and tables.
✑ Use the table alias to qualify column names.
✑ Define the alias for all fields by using the AS keyword.
✑ Use the first letter of the table name as the table alias.
✑ Do not use the ROW_NUMBER function.
✑ Do not surround object names with square brackets.
✑ Do not use variables.
Part of the correct Transact-SQL has been provided in the answer area below. Enter the code in the answer area that resolves the problem and
meets the stated goals or requirements. You can add code within the code that has been provided as well as below it.
1. SELECT
2. FROM Sales.Products AS P
Use the Check Syntax button to verify your work. Any syntax or spelling errors will be reported by line and character position. You may check
syntax as many times as needed.

Correct Answer: See explanation below


1. SELECT avg(P.ProductPrice) AS Average, min(P.ProductsInStock) AS LowestNumber, max(P.ProductPrice) AS HighestPrice
2. FROM Sales.Products AS P

Make the additions to line 1.


References:
https://www.mssqltips.com/sqlservertip/4424/max-min-and-avg-sql-server-functions/

Question #160 Topic 1

You are developing a mobile app to manage meetups. The app allows for users to view the 25 closest people with similar interests. You have a
table that contains records for approximately two million people. You create the table by running the following Transact-SQL statement:

You create the following table valued function to generate lists of people:
You need to build a report that shows meetings with at least two people only.
What should you use?

A. OUTER APPLY

B. CROSS APPLY

C. PIVOT

D. LEFT OUTER JOIN

Correct Answer: B
References:
https://www.sqlshack.com/the-difference-between-cross-apply-and-outer-apply-in-sql-server/

Question #161 Topic 1

You develop and deploy a project management application. The application uses a Microsoft SQL Server database to store data. You are
developing a software bug tracking add-on for the application.
The add-on must meet the following requirements:
"¢ Allow case sensitive searches for product.
"¢ Filter search results based on exact text in the description. "¢ Support multibyte Unicode characters.
You run the following Transact-SQL statement:

You need to ensure that users can perform searches of descriptions.


Which Transact-SQL statement should you run?

A.

B.
C.

D.

Correct Answer: D
References:
https://docs.microsoft.com/en-us/sql/t-sql/queries/contains-transact-sql?view=sql-server-2017

  M4x 5 months, 4 weeks ago


Cannot use a
CONTAINS or FREETEXT predicate on table or indexed view 'Test.dbo.Table_1'
because it is not full-text indexed. Correct answer A
https://docs.microsoft.com/it-it/sql/t-sql/functions/charindex-transact-sql?view=sql-server-2017
upvoted 5 times

  mattia_88 4 months, 3 weeks ago


is incomplete
the answer A
upvoted 1 times

  Bartek 5 months, 2 weeks ago


https://docs.microsoft.com/en-us/sql/t-sql/queries/contains-transact-sql?view=sql-server-2017
"The columns in the CONTAINS clause must come from a single table that has a
full-text index. Unless language_term is specified, the language of all columns
of the table must be the same."
upvoted 1 times

  mattia_88 4 months, 3 weeks ago


"Allow case
sensitive searches for product" CHARINDEX (@term,[DESCRIPTION] COLLATE
Latin1_General_CS_AS)
upvoted 3 times

Question #162 Topic 1

You are building a stored procedure named SP1 that calls a stored procedure named SP2.
SP2 calls another stored procedure named SP3 that returns a Recordset. The Recordset is stored in a temporary table.
You need to ensure that SP2 returns a text value to SP1.
What should you do?

A. Create a temporary table in SP2, and then insert the text value into the table.

B. Return the text value by using the ReturnValue when SP2 is called.

C. Add the txt value to an OUTPUT parameter of SP2.

D. Create a table variable in SP2, and then insert the text value into the table.

Correct Answer: C

Question #163 Topic 1


DRAG DROP -
You run the following Transact-SQL statement:

You need to create a stored procedure that meets the following requirements:
✑ Inserts data into the Employees table.
✑ Processes all data changes as a single unit of work.
✑ Sets the exception severity level to 16 and an error number of 60, 000 when any error occurs.
✑ If a Transact-SQL statement raises a runtime error, terminates and reverts the entire unit of work, and indicates the line number in the
statement where the error occurred.
✑ Inserts the value New Employee for the Title column if no title is provided.
How should you complete the Transact-SQL statement? To answer, drag the appropriate Transact-SQL segment to the correct target. Each
Transact-SQL segment may be used once, more than once, or not at all. You may need to drag the split bar between panes or scroll to view
content.
NOTE: Each correct selection is worth one point.
Select and Place:
Correct Answer:

References:
https://stackoverflow.com/questions/180075/executing-a-stored-procedure-inside-begin-end-transaction

  Bartek 5 months, 2 weeks ago


Xact_state ()
tile and Throw (if there II be ";" before it statement) II work this same as
@@trancount and raiserror
upvoted 3 times

  Tr4ckz 5 months ago


Not with Xact_state <> 0 (compare 3 valued xact
logic to @@trancount logic which UNLIKE xact state should be 0 to indicate all
transactions are closed)
upvoted 1 times

  mattia_88 4 months, 3 weeks ago


no ,because
there isn't XACT_ABORT ON
upvoted 4 times

Question #164 Topic 1

HOTSPOT -
You have a database that contains the following tables: tblEmployees and tblSalesSummary. Each record contains approximately one million
records.
You use Microsoft SQL Server Management Studio (SSMS) to run two queries. The Include Actual Execution Plan option is enabled.
Both queries return the same results. SSMS generates the execution plans shown in the exhibit. (Click the Exhibit button.)
You need to troubleshoot the queries.
How should you interpret the execution plans? To answer, select the appropriate options in the answer area.
NOTE: Each correct selection is worth one point.
Hot Area:

Correct Answer:

References:
https://docs.microsoft.com/en-us/sql/relational-databases/showplan-logical-and-physical-operators-reference?view=sql-server-2017

  M4x 5 months, 4 weeks ago


Second box is
wrong. Correct answer 'The index spool operation is executed many times' Cost
97% and is the inner table
https://docs.microsoft.com/en-us/sql/relational-databases/performance/joins?view=sql-server-2017#nested_loops
upvoted 5 times

Question #165 Topic 1

DRAG DROP -
You have a database named DB1 that contains a table named HR.Employees. HR.Employees contains two columns named ManagerID and
EmployeeID.
ManagerID refers to EmployeeID.
You need to create a query that returns a list of all employees, the manager of each employee, and the numerical level of each employee in your
organization's hierarchy.
Which five statements should you add to the query in sequence? To answer, move the appropriate statements from the list of statements to the
answer area and arrange them in the correct order.
Select and Place:

Correct Answer:

References:
https://blog.sqlauthority.com/2012/04/24/sql-server-introduction-to-hierarchical-query-using-a-recursive-cte-a-primer/

  Dieter 6 months, 3 weeks ago


wrong order.
should start with WITH clause, then Select ...Manager IS NULL (anchor query),
UNION ALL then the other select for the with clause, finally the select * from
managers
upvoted 10 times

  hgi 2 months ago


the join is wrong as well (the tables are
switched)
upvoted 2 times
  Prides 4 weeks, 1 day ago
the join is right. just try.
upvoted 1 times

  Prides 4 weeks, 1 day ago


Actually hgi is RIGHT. the join is wrong!
upvoted 1 times

  Postarion 4 weeks, 1 day ago


WITH Managers AS ( SELECT ManagerId, EmployeeId, 0 AS
EmployeeLevel FROM Employees WHERE MAnagerId IS NULL UNION SELECT
Employees.ManagerId, Employees.EmployeeId, EmployeeLevel +1 From Employees JOIN
Managers ON Employees.EmployeeId = Managers.ManagerId ) SELECT * FROM Managers
ORDER BY ManagerID
upvoted 1 times

  anonimdom 3 weeks, 6 days ago


UNION
ALL
upvoted 1 times

  Ondaenergetica 2 weeks, 4 days ago


yup
it's the recursive form of the CTE , so UNION ALL is right
upvoted 1 times

Question #166 Topic 1

HOTSPOT -
You have the following Transact-SQL statement:

DELETE FROM Person -

WHERE PersonID = 5 -
You need to implement error handling.
How should you complete Transact-SQL statement? To answer, select the appropriate options in the answer area.
NOTE: Each correct selection is worth one point.
Hot Area:
Correct Answer:

References:
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/try-catch-transact-sql?view=sql-server-2017

  mlourinho 3 months, 2 weeks ago


Well, I think
the right answers are: » Begin Try » Commit Transaction » End Try » RollBack
Transaction
upvoted 1 times

  Prides 4 weeks, 1 day ago


NO, you can not have any other codes between END TRY and
BEGIN CATCH
upvoted 1 times

  damirbek369 3 months, 1 week ago


I
think, the rest of the code is missing. And in my opiniin the right answer
should be: BEGIN TRY END TRY BEGIN CATCH ROLLBACK TRANSACTION END CATCH COMMIT
TRANSACTION
upvoted 3 times

  Lukis92 1 month ago


BEGIN TRY BEGIN TRANSACTION COMMIT TRANSACTION END TRY
BEGIN CATCH ROLLBACK TRANSACTION END CATCH
upvoted 2 times

  Andi64 2 weeks, 3 days ago


I think it
should be: Begin Try Commit End Try Begin Catch Rollback End Catch
upvoted 1 times

Question #167 Topic 1


Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You are creating indexes in a data warehouse.
You have a dimension table named Table1 that has 10,000 rows. The rows are used to generate several reports.
The reports join a column that is the primary key.
The execution plan contains bookmark lookups for Table1.
You discover that the reports run slower than expected.
You need to reduce the amount of time it takes to run the reports.
Solution: You create a nonclustered index on the primary key column that does NOT include columns.
Does this meet the goal?

A. Yes

B. No

Correct Answer: A
References:
https://docs.microsoft.com/en-us/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described?view=sql-server-2017

  mlourinho 3 months, 2 weeks ago


I think the
answer is B, because Primary Keys should have a clustered Index .
upvoted 3 times

  mlourinho 3 months, 2 weeks ago


when creating
a primary key automatically creates a corresponding unique clustered index, or a
nonclustered index if specified as such, therefore, if the table has a Primary
Key an index already exists. If the Index already exists, it may be : »
Clustered, therefore changing the index to a non-clustered index will not help »
non-clustered, therefore the change will no be much
upvoted 1 times

Question #168 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You create a table named Customer by running the following Transact-SQL statement:

You create a cursor by running the following Transact-SQL statement:


If the credit limit is zero, you must delete the customer record while fetching data.
You need to add the DELETE statement.
Solution: You add the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B
Use a WHERE CURRENT OF clause, which deletes at the current position of the specified cursor.
References:
https://docs.microsoft.com/en-us/sql/t-sql/statements/delete-transact-sql

Question #169 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You create a table named Customer by running the following Transact-SQL statement:

You create a cursor by running the following Transact-SQL statement:


If the credit limit is zero, you must delete the customer record while fetching data.
You need to add the DELETE statement.
Solution: You add the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: A
CURRENT OF specifies that the DELETE is performed at the current position of the specified cursor.
References:
https://docs.microsoft.com/en-us/sql/t-sql/statements/delete-transact-sql

Question #170 Topic 1

HOTSPOT -
You create a table to store sales information for an online sales application by running the following Transact-SQL statement:

You have a historical report that summarizes the sales for each quarter and year. The query that generated the data for the report is no longer
available. A representative report contains the following data:

You need to recreate the query for the report.


How should you complete the Transact-SQL statement? To answer, select the appropriate Transact-SQL segments in the answer area.
NOTE: Each correct selection is worth one point.
Hot Area:

Correct Answer:

WHEN expression is a simple expression to which input_expression is compared when the simple CASE format is used and is any valid
expression.
ELSE is the expression returned if no comparison operation evaluates as TRUE.
DATEPART returns an integer which represents the specified datepart of the date, such as day, month, year, quarter etc.
References:
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/case-transact-sql?view=sql-server-2017 https://docs.microsoft.com/en-
us/sql/t-sql/functions/datepart-transact-sql?view=sql-server-2017

  Dieter 6 months, 3 weeks ago


should be 1.
option: GROUPING 2. option: GROUPING 3. option: year, quarter WITH
ROLLUP
upvoted 10 times

  mlourinho 3 months, 2 weeks ago


IF
OBJECT_ID('TEMPDB..#SALES') IS NOT NULL DROP TABLE #SALES CREATE TABLE #SALES (
SalesOrderID INT IDENTITY NOT NULL , OrderDate DATETIME NOT NULL ,
Total MONEY NULL ) INSERT INTO #SALES(Total, OrderDate) VALUES ('8771886.36',
'20130101') , ('14373277.48', '20140101') , ('12225061.38', '20130401') ,
('8046220.84', '20140401') , ('14339319.19', '20130701') , ('13629621.04',
'20131001') SELECT SUM(Total) AS Total , DATEPART(QUARTER, OrderDate) AS
[Quarter] , YEAR(OrderDate) AS [YEAR] , GROUPING(DATEPART(QUARTER,
OrderDate)) AS G1 , GROUPING(DATEPART(YEAR, OrderDate)) AS G2 FROM #SALES
GROUP BY DATEPART(QUARTER, OrderDate), YEAR(OrderDate) WITH ROLLUP
upvoted 2 times

  Prides 4 weeks ago


thank you for the codes. it works exactly as it should
be.
upvoted 1 times

  MarcusJB 1 week ago


I guess it should be vice versa from big to fine
groupings: ... GROUP BY YEAR(OrderDate), DATEPART(QUARTER, OrderDate) WITH
ROLLUP; Else you would sum up all quarters of all years and then all years
without quarters.
upvoted 1 times

  anonimdom 1 month, 2 weeks ago


"WITH ROLLUP"
- isn't it a MYSQL syntax?
upvoted 1 times

  MarcusJB 1 week ago


It's an old notation. WITH ROLLUP and WITH CUBE are
non-ISO compliant syntax and will be removed in a future version.
upvoted 1 times

  Jiacheng 3 weeks, 2 days ago


if change case
when to 'is null' then could use case when
upvoted 1 times

Question #171 Topic 1

DRAG DROP -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question in this series.

Start of repeated scenario -


You are developing a database to track customer orders. The database contains the following tables: Sales.Customers, Sales.Orders, and
Sales.OrderLines. The following table describes the columns in Sales.Customers.

The following table describes the columns in Sales.Orders.


The following table describes the columns in Sales.OrderLines.

End of repeated scenario -


You need to create a common table expression (CTE) that returns the total number of orders per year for each customer.
Which five Transact-SQL segments should you use to develop the solution? To answer, move the appropriate Transact-SQL segments from the list
of Transact-
SQL segments to the answer area and arrange them in the correct order.
Select and Place:
Correct Answer:

References:
https://docs.microsoft.com/en-us/sql/t-sql/queries/with-common-table-expression-transact-sql?view=sql-server-2017

Question #172 Topic 1

You have a table named Table1 that contains 200 million rows. Table1 contains a column named SaleDate that has a data type of DateTime2(3).
Users report that the following query runs slowly.

You need to reduce the amount of time it takes to run the query.
What should you use to replace the WHERE statement?

A. WHERE SaleDate >= '2017-01-01' AND SaleDate < '2018-01-01'

B. WHERE cast(SaleDate as varchar(10)) BETWEEN '2017-01-01' AND '2017-12-31'

C. WHERE cast(SaleDate as date) BETWEEN '2017-01-01' AND '2017-12-31'

D. WHERE 2017 = year(SaleDate)

Correct Answer: C
References:
https://docs.microsoft.com/en-us/sql/t-sql/queries/select-transact-sql?view=sql-server-2017

  AshleyLiang 6 months, 2 weeks ago


Correct answer is A.
upvoted 12 times

  Prides 4 weeks ago


ANSWER C actually will not include the date of
12-31-2017
upvoted 1 times

  New_user 2 months, 2 weeks ago


Answer A has
type mismatch - SaleDate is DateTime2 type column, condition is varchar. There's
same misteke in C. B is correct
upvoted 1 times

  Lukis92 1 month, 2 weeks ago


The correct
answer is C. SQL Server implicitly convert varchar on the right side to date
type.
upvoted 1 times

  gtc108 1 month ago


Answer is A: In order for a query to be saragable, it
should not use a function.
https://www.sqlshack.com/how-to-use-sargable-expressions-in-t-sql-queries-performance-advantages-and-examples/
upvoted 3 times

  Jiacheng 3 weeks, 2 days ago


you could
check with your SSMS, all A,B,C could work. And gtc108 is correct, without
function makes perform best
upvoted 1 times

Question #173 Topic 1

You have a database that tracks customer complaints.


The database contains a table named Complaints that includes the following columns:

You need to create a query that lists complaints about defective products. The report must include complaints where the exact phrase "defective
product" occurs, as well as complaints where similar phrases occur.
Which Transact-SQL statement should you run?

A. SELECT ComplaintID, ComplaintTranscript FROM Complaints WHERE CONTAINS(CustomerTranscript, 'defective') AND


CONTAINS(CustomerTranscript, 'product')

B. SELECT ComplaintID, CustomerTranscript FROM Complaints WHERE SOUNDEX('defective') = SOUNDEX('product')

C. SELECT ComplaintID, CustomerTranscript FROM Complaints WHERE FREETEXT(CustomerTranscript, 'defective product')

D. SELECT ComplaintID, Customer Transcript FROM Complaints WHERE CustomerTranscript like '%defective product%'

Correct Answer: A
References:
https://docs.microsoft.com/en-us/sql/t-sql/queries/contains-transact-sql?view=sql-server-2017

  M4x 5 months, 3 weeks ago


What mean
'similar' ? If is a free-text column the answer is C (verified) otherwise is D
the like
upvoted 2 times

  anonimdom 1 week, 4 days ago


The D searches only for exact phrase, so it looks like
the answer is C or A.
upvoted 1 times

  mlourinho 3 months, 2 weeks ago


FREETEXT »
this predicate searches for values that match the meaning and not just the exact
wording of the words in the search condition.
https://docs.microsoft.com/en-us/sql/t-sql/queries/freetext-transact-sql?view=sql-server-ver15
upvoted 1 times
Question #174 Topic 1

You run the following Transact-SQL statements:

You need to create a query that returns the total number of attendees for each combination of CourseID, CourseDate, and the following locations:
Lisbon, London, and Seattle. The result set should resemble the following:

Which Transact-SQL code segment should you run?

A. SELECT * FROM CourseParticipants PIVOT(SUM(NumParticipants) FOR LocationDescription IN (Lisbon, London, Seattle))

B. SELECT * FROM CourseParticipants PIVOT(SUM(NumParticipants) FOR LocationDescription IN (Lisbon, London, Seattle)) as PVTTable

C. SELECT * FROM CourseParticipants UNPIVOT(SUM(NumParticipants) FOR LocationDescription IN (Lisbon, London, Seattle)

D. SELECT * FROM CourseParticipants UNPIVOT(SUM(NumParticipants) FOR LocationDescription IN (Lisbon, London, Seattle) AS PVTTable

Correct Answer: B
References:
https://www.techonthenet.com/sql_server/pivot.php

Question #175 Topic 1

You have a project management application. The application uses a Microsoft SQL Server database to store data. You are developing a software
bug tracking add-on for the application.
The add-on must meet the following requirements:
✑ Allow case sensitive searches for product.
✑ Filter search results based on exact text in the description.
✑ Support multibyte Unicode characters.
You run the following Transact-SQL statement:

Users connect to an instance of the bug tracking application that is hosted in New York City. Users in Seattle must be able to display the local date
and time for any bugs that they create.
You need to ensure that the DateCreated column displays correctly.
Which Transact-SQL statement should you run?

A. SELECT Id,Product, DateCreated AT TIME ZONE 'Pacific Standard Time' FROM Bug

B. SELECT Id,Product, DATEADD(hh, -8, DateCreated) FROM Bug

C. SELECT Id,Product, TODATETIMEOFFSET(DateCreated, -8) FROM Bug


D. SELECT Id,Product, CAST(DateCreated AS DATETIMEOFFSET) FROM Bug

Correct Answer: C
References:
https://docs.microsoft.com/en-us/sql/t-sql/functions/todatetimeoffset-transact-sql?view=sql-server-2017

  safiullah 6 months, 2 weeks ago


I think the
correct answer should be A. Because time off set between seattle and newyork is
3 hours and not 8 hours. and seattle is in 'Pacific Standrad TIme'. At time zone
does the trick here.
upvoted 8 times

  mattia_88 4 months, 3 weeks ago


is possibile
check this view sys.time_zone_info
upvoted 1 times

  more 2 weeks, 1 day ago


c wrong there is a difference between TODATETIMEOFFSET(
....,'-08:00') and TODATETIMEOFFSET(...,-8) the other is hours and the other
minutes
upvoted 1 times

Question #176 Topic 1

DRAG DROP -
You have a project management application. The application uses a Microsoft SQL Server database to store data. You are developing a software
bug tracking add-on for the application.
The add-on must meet the following requirements:
✑ Allow case sensitive searches for product.
✑ Filter search results based on exact text in the description.
✑ Support multibyte Unicode characters.
You run the following Transact-SQL statement:

You need to display a comma separated list of all product bugs filed by a user named User1.
How should you complete the Transact-SQL statement? To answer, drag the appropriate Transact-SQL segments to the correct locations. Each
Transact-SQL segment may be used once, more than once, or not at all. You may need to drag the split bar between panes or scroll to view
content.
NOTE: Each correct selection is worth one point.
Select and Place:

Correct Answer:

References:
https://docs.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql?view=sql-server-2017

  Dieter 6 months, 3 weeks ago


Select
Statement is wrong. Choose @List = Product + ', ' + @List
upvoted 12 times

  imran 4 months, 2 weeks ago


wrong answer
in select cant use table.
upvoted 2 times

  anonimdom 1 month, 2 weeks ago


@List = @List
+ ', ' + Product looks correct too.
upvoted 2 times

Question #177 Topic 1


DRAG DROP -
You create a table to track sales persons by running the following Transact-SQL statement:

You need to create a report that shows the sales people within each territory for each year. The report must display sales people in order by
highest sales amount.
How should you complete the Transact-SQL statement? To answer, drag the appropriate Transact-SQL segments to the correct locations. Each
Transact-SQL segment may be used once, more than once, or not at all. You may need to drag the split bar between panes or scroll to view
content.
NOTE: Each correct selection is worth one point.
Select and Place:

Correct Answer:

Ranking rows results in the partition of a result set being returned.


PARTITION BY divides the query result into partition.
ORDER BY defines the logical order of the rows.
References:
https://docs.microsoft.com/en-us/sql/t-sql/functions/rank-transact-sql?view=sql-server-2017

  MarcusJB 5 days, 9 hours ago


From my point
of view it should be "... ORDER BY Sales DESC)" if you like to have the highest
sales amount on rank 1, but that's not included in the answer
segments.
upvoted 1 times
Question #178 Topic 1

SIMULATION -
You have a database that includes the following tables. All of the tables are in the Production schema.

You need to create a query that returns a list of product names for all products in the Beverages category.
Construct the query using the following guidelines:
✑ Use the first letter of the table name as the table alias.
✑ Use two-part column names.
✑ Do not surround object names with square brackets.
✑ Do not use implicit joins.
✑ Do not use variables.
✑ Use single quotes to surround literal values.
Part of the correct Transact-SQL has been provided in the answer area below. Enter the code in the answer area that resolves the problem and
meets the stated goals or requirements. You can add code within the code that has been provided as well as below it.

Correct Answer: See the explanation below.


1. SELECT p.productname
2. FROM Production.Categories As c
3. JOIN Production.Products As p
ON ( c.categoryid = p.categoryid )
4. WHERE c.categoryname = 'Beverages'
References:
https://docs.microsoft.com/en-us/sql/relational-databases/performance/joins?view=sql-server-2017
Question #179 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You have a table named Person that contains information about employees. Users are requesting a way to access specific columns from the
Person table without specifying the Person table in the query statement. The columns that users can access will be determined when the query is
running against the data. There are some records that are restricted, and a trigger will evaluate whether the request is attempting to access a
restricted record.
You need to ensure that users can access the needed columns while minimizing storage on the database server.
What should you implement?

A. the COALESCE function

B. a view

C. a table-valued function

D. the TRY_PARSE function

E. a stored procedure

F. the ISNULL function

G. a scalar function

H. the TRY_CONVERT function

Correct Answer: B
References:
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-view-transact-sql?view=sql-server-2017

  anonimdom 1 month, 2 weeks ago


Can views do
that: "The columns that users can access will be determined when the query is
running against the data."? It looks like some logic should be implemented to
determine the columns, so possibly a table valued function can do
that.
upvoted 2 times

  MarcusJB 5 days, 9 hours ago


I had the
exact same thoughts. I would be interested in how this could be implemented
exactly. No problem with a table valued function, but how you would do this with
a trigger?
upvoted 1 times

  Prides 4 weeks ago


trigger are supported only on tables, views, schema or
database, not on functions
upvoted 1 times

Question #180 Topic 1


You have a table that was created by running the following Transact-SQL statement:

You need to query the Courses table and return the result set as JSON. The output from the query must resemble the following format:

A. SELECT CourseID AS [Course ID], Course as Name FROM Courses FOR JSON PATH('Courses')

B. SELECT CourseID AS 'Course ID', Course AS Name FROM Courses FOR JSON ROOT('Courses')

C. SELECT CourseID AS [Course ID], Course AS Name FROM Courses FOR JSON AUTO, ROOT('Courses')

D. SELECT CourseID AS 'Course ID', Course AS Name FROM Courses FOR JSON AUTO, INCLUDE_NULL_VALUES('Courses')

Correct Answer: D
References:
https://docs.microsoft.com/en-us/sql/relational-databases/json/include-null-values-in-json-include-null-values-option?view=sql-server-2017

  Dieter 6 months, 3 weeks ago


In my test
this is not possible. Correct answer should be C.Since Auto formats the JSON
Output automatically due to this requirements, in addtion the ROOT Parameter
defines the root node in the output.
upvoted 6 times

  AshleyLiang 6 months, 2 weeks ago


But Nulls are by default excluded from the JSON output,
for both AUTO and PATH modes.
upvoted 1 times

  safiullah 6 months, 2 weeks ago


I agree with
Dieter option C should be the correct answer I have ran it maually on PC and
only option with AUTO and ROOT will give us the required format. C. SELECT
CourseID AS [Course ID], Course AS Name FROM Courses FOR JSON AUTO,
ROOT('Courses')
upvoted 3 times

  okh 5 months, 2 weeks ago


Correct answer
is C
upvoted 2 times

  prakash101179 5 months ago


C
is right answer. D would have been right if it would have 'SELECT CourseID AS
'Course ID', Course AS Name FROM Courses FOR JSON AUTO, INCLUDE_NULL_VALUES,
ROOT('Courses')' instead of 'SELECT CourseID AS 'Course ID', Course AS Name FROM
Courses FOR JSON AUTO, INCLUDE_NULL_VALUES('Courses') '
upvoted 5 times

Question #181 Topic 1


A company's sales team is divided in two different regions, North and South. You create tables named SalesNorth and SalesSouth. The SalesNorth
table stores sales data from the North region. The SalesSouth table stores sales data from the South region. Both tables use the following
structure:

You need to create a consolidated result set that includes all records from both tables.
Which Transact-SQL statement should you run?

A. SELECT SalesNorth.salesID, SalesNorth.customer, SalesNorth.amount, SalesSouth.SalesID, SalesSouth.customer, SalesSouth.amount


FROM SalesNorth JOIN SalesSouth ON SalesNorth.salesID = SalesSouth.salesID

B. SELECT SalesNorth.salesID, SalesNorth.customer, SalesNorth.amount, SalesSouth.salesID, SalesSouth.customer, SalesSouth.amount


FROM SalesNorth LEFT JOIN SalesSouth ON SalesNorth.salesID=SalesSouth.salesID

C. SELECT salesID, customer, amount FROM SalesNorth UNION ALL SELECT salesID, customer, amount FROM SalesSouth

D. SELECT salesID, customer, amount FROM SalesNorth UNION SELECT salesID, customer, amount FROM SalesSouth

Correct Answer: C
References:
https://docs.microsoft.com/en-us/sql/t-sql/queries/from-transact-sql?view=sql-server-2017

Question #182 Topic 1

DRAG DROP -
You need to create a stored procedure that meets the following requirements:
✑ Produces a warning if the credit limit parameter is greater than 7,000
✑ Propagates all unexpected errors to the calling process
How should you complete the Transact-SQL statement? To answer, drag the appropriate Transact-SQL segments to the correct locations. Each
Transact-SQL segments may be used once, more than once, or not at all. You may need to drag the split bar between panes or scroll to view
content.
Select and Place:
Correct Answer:

Box 1: THROW 51000, 'Warning: Credit limit is over 7,000!",1


THROW raises an exception and transfers execution to a CATCH block of a TRY"¦CATCH construct in SQL Server.
THROW syntax:
THROW [ { error_number | @local_variable },
{ message | @local_variable },
{ state | @local_variable } ]
[;]
Box2: RAISERROR (@ErrorMessage, 16,1)
RAISERROR generates an error message and initiates error processing for the session. RAISERROR can either reference a user-defined message
stored in the sys.messages catalog view or build a message dynamically. The message is returned as a server error message to the calling
application or to an associated
CATCH block of a TRY"¦CATCH construct. New applications should use THROW instead.
Severity levels from 0 through 18 can be specified by any user. Severity levels from 19through 25 can only be specified by members of the
sysadmin fixed server role or users with ALTER TRACE permissions. For severity levels from 19 through 25, the WITH LOG option is required.
On Severity level 16. Using THROW to raise an exception
The following example shows how to use the THROW statement to raise an exception.

Transact-SQL -
THROW 51000, 'The record does not exist.', 1;
Here is the result set.
Msg 51000, Level 16, State 1, Line 1
The record does not exist.
Note: RAISERROR syntax:
RAISERROR( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ] )
[ WITH option [ ,...n ] ]
Note: The ERROR_MESSAGE function returns the message text of the error that caused the CATCH block of a TRY"¦CATCH construct to be run.
References:
https://msdn.microsoft.com/en-us/library/ms178592.aspx
https://msdn.microsoft.com/en-us/library/ms190358.aspx
https://msdn.microsoft.com/en-us/library/ee677615.aspx

  AshleyLiang 6 months, 2 weeks ago


As the first requirement is to produce a warning and the
second is an error, the severity in RAISERROR() should be 0-10 and 11-19
respectively. Severity 20-25 is fatal and terminates the current
connection.
upvoted 5 times

  M4x 5 months, 3 weeks ago


From
Microsoft. If you raise an error that has a severity level of 10 or less, which
is a warning, no exception is raised.
https://support.microsoft.com/en-ca/help/321903/how-to-return-errors-and-warnings-from-a-sql-server-stored-procedure-i
Correct answer for first box RAISEERROR ('..', 10, 1)
upvoted 4 times

  anonimdom 1 month, 2 weeks ago


"10 or less"
means: if severity level is 10, then no exception is raised. So severity should
be 11 or more.
upvoted 1 times

  anonimdom 1 week, 3 days ago


Sorry, it looks like I misunderstood the
question
upvoted 1 times

  Andi64 2 weeks, 1 day ago


<Produces a warning if the credit limit parameter is
greater than 7,000> : This doesn't mean that the credit limit can't be
inserted into the table, it's just a warning, therefore the 1st Statmente should
be Raiserror ('Warning.... ', 10,1). Only on a runtime error the procedure have
to walk into the the Catch block, log the errormessage and probagate the error
status to the calling process. Just the "THROW;" without paramenters seems to be
enough as second statement.
upvoted 2 times

Question #183 Topic 1

You have a date related query that would benefit from an indexed view.
You need to create the indexed view.
Which two Transact-SQL functions can you use? Each correct answer presents a complete solution.
NOTE: Each correct selection is worth one point.

A. DATEADD

B. AT TIME ZONE

C. GETUTCDATE

D. DATEDIFF

Correct Answer: CD
References:
https://docs.microsoft.com/en-us/sql/t-sql/functions/date-and-time-data-types-and-functions-transact-sql?view=sql-server-
2017#DateandTimeFunctions

  safiullah 6 months, 2 weeks ago


Hi, I think
the question here is related to deterministic versus non-deterministic
functions. An index can not be created for a non-deterministic function.
Therefore, the correct answer should be "DATEADD" and "DATEDIFF", because both
of them are always deterministic functions as per below microsoft link.
https://docs.microsoft.com/en-us/sql/relational-databases/user-defined-functions/deterministic-and-nondeterministic-functions?view=sql-server-
2017
upvoted 4 times

  M4x 5 months, 3 weeks ago


Agree. But the
question is on VIEW, I try all 4 statements inside an INDEXED VIEW and ALL 4
working properly !
upvoted 1 times

  mattia_88 4 months, 3 weeks ago


DATEADD e
DATEDIFF are deterministic
upvoted 2 times

  ivanbtod 1 month, 3 weeks ago


The definition
of an indexed view must be deterministic. DATEADD and DATEDIFF are
deterministic
upvoted 2 times

Question #184 Topic 1

You are developing a database to track employee progress relative to training goals. You run the following Transact-SQL statements:

You must build a report that shows all Employees and the courses that they have taken. Employees that have not taken training courses must still
appear in the report. The report must display NULL in the course column for these employees.
You need to create a query for the report.

A.

B.

C.

D.

Correct Answer: C
Incorrect Answers:
A, B: JOIN and INNER JOIN displays only the rows that have a match in both joined tables
References:
https://www.mssqltips.com/sqlservertip/1667/sql-server-join-example/

  AshleyLiang 6 months, 3 weeks ago


Answer should be D because all employees need to be
returned.
upvoted 12 times

  safiullah 6 months, 2 weeks ago


I agree with
AshleyLiang because we need all employees whether they have taken courses or not
and since the employee table is at the right side in the multiple join query
therefore RIGHT JOIN will return the employees with NULL as stated in the
question
upvoted 4 times

  mattia_88 4 months, 3 weeks ago


RIGHT JOIN is
correct (answer D)
upvoted 4 times

Question #185 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database that includes the tables shown in the exhibit (Click the Exhibit button.)

You need to create a Transact-SQL query that returns the following information:
✑ the customer number
✑ the customer contact name
✑ the date the order was placed, with a name of DateofOrder
✑ a column named Salesperson, formatted with the employee first name, a space, and the employee last name
✑ orders for customers where the employee identifier equals 4
The output must be sorted by order date, with the newest orders first.
The solution must return only the most recent order for each customer.
Solution: You run the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No
Correct Answer: B
We cannot use the column alias Salesperson in the GROUP BY clause, since in Oracle and SQL Server, you cannot use a term in the GROUP BY
clause that you define in the SELECT clause because the GROUP BY is executed before the SELECT clause.
References:
https://stackoverflow.com/questions/3841295/sql-using-alias-in-group-by/3841804

Currently there are no comments in this discussion, be the first to comment!

Question #186 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have a database named DB1 that contains two tables named Sales.Customers and Sales.Orders. Sales.Customers has a foreign key
relationship to a column named CustomerID in Sales.Orders.
You need to recommend a query that returns all the customers. The query must also return the number of orders that each customer placed in
2016.
Solution: You recommend the following query:

Does this meet the goal?

A. Yes

B. No

Correct Answer: B
References:
https://docs.microsoft.com/en-us/sql/t-sql/functions/count-transact-sql?view=sql-server-2017

Question #187 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section. You will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You create a table named Products by running the following Transact-SQL statement:
You have the following stored procedure:

You need to modify the stored procedure to meet the following new requirements:
✑ Insert product records as a single unit of work.
✑ Return error number 51000 when a product fails to insert into the database.
✑ If a product record insert operation fails, the product information must not be permanently written to the database.
Solution: You run the following Transact-SQL statement:

Does this meet the goal?

A. Yes

B. No

Correct Answer: B
XACT_STATE is a scalar function that reports the user transaction state of a current running request. XACT_STATE indicates whether the
request has an active user transaction, and whether the transaction is capable of being committed.
The states of XACT_STATE are:
✑ 0 There is no active user transaction for the current request.
✑ 1 The current request has an active user transaction. The request can perform any actions, including writing data and committing the
transaction.
✑ 2 The current request has an active user transaction, but an error has occurred that has caused the transaction to be classified as an
uncommittable transaction.
Example of correct use:

BEGIN CATCH -
-- Test XACT_STATE for 0, 1, or -1.
-- If 1, the transaction is committable.
-- If -1, the transaction is uncommittable and should
-- be rolled back.
-- XACT_STATE = 0 means there is no transaction and
-- a commit or rollback operation would generate an error.
-- Test whether the transaction is uncommittable.

IF (XACT_STATE()) = -1 -

BEGIN -
PRINT 'The transaction is in an uncommittable state.' +
' Rolling back transaction.'
ROLLBACK TRANSACTION;
END;
-- Test whether the transaction is active and valid.

IF (XACT_STATE()) = 1 -

BEGIN -
PRINT 'The transaction is committable.' +
' Committing transaction.'
COMMIT TRANSACTION;
END;
END CATCH;
References:
https://msdn.microsoft.com/en-us/library/ms188792.aspx
https://msdn.microsoft.com/en-us/library/ms189797.aspx

  M4x 5 months, 3 weeks ago


Wrong ! The
explanation says about XACT_STATE but the firs line of code is XACT_ABORT that
rollback in case of any error. Correct answer YES.
upvoted 5 times

  Bartek 5 months, 2 weeks ago


Correct answer
= "No" There is another option for trapping errors that is one step toward
structured error handling: SET XACT_ABORT (where XACT stands for "transaction").
XACT_ABORT works with all types of code and affects the entire batch. You can
make an entire batch fail if any error occurs by beginning it with SET
XACT_ABORT ON. You set XACT_ABORT per session. After it is set to ON, all
remaining transactions in that setting are subject to it until it is set to OFF.
SET XACT_ABORT has some advantages. It causes a transaction to roll back based
on any error with severity > 10. However, XACT_ABORT has many limitations,
such as the following: ■■ You cannot trap for the error or capture the error
number. ■■ Any error with severity level > 10 causes the transaction to roll
back. ■■ None of the remaining code in the transaction is executed. Even the
final PRINT statements of the transaction are not executed. ■■ After the
transaction is aborted, you can only infer what statements failed by inspecting
the error message returned to the client by SQL Server.
upvoted 3 times

  anonimdom 1 week, 3 days ago


Did you test it? "None of the remaining code in the
transaction is executed." - that might mean the remaining code in begin
tran...commit tran.
upvoted 1 times

  fabzo 3 months, 2 weeks ago


answer is NO
as it will not be possible with XACT on to return error 51000
upvoted 2 times

  flashed 4 weeks, 1 day ago


I agree with M4x, the correct answer is YES. I tested:
CREATE TABLE [dbo].[DISTRICTS]( [ID_District] [int] IDENTITY(1,1) NOT NULL,
[DistrictName] [varchar](255) NOT NULL, [City] [varchar](2) NULL ) ON [PRIMARY]
GO BEGIN SET XACT_ABORT ON BEGIN TRY BEGIN TRANSACTION INSERT INTO
DISTRICTS (DISTRICTNAME,CITY) VALUES ('LIS', 'TRETRT') COMMIT TRANSACTION;
END TRY BEGIN CATCH THROW 51000, 'MANUAL MSG ERROR',1 END CATCH END ; error
message: (0 rows affected) Msg 51000, Level 16, State 1, Line 10 MANUAL MSG
ERROR
upvoted 1 times

Question #188 Topic 1

You are performing a code review of stored procedures. Code at line SP03 fails to run (Line numbers are included for reference only.)

You need to ensure that transactions are rolled back when an error occurs.
Which Transact-SQL segment should you insert at line SP07?

A. If @@Error <> 0

B. If @@ TRANCOUNT = 0

C. If @@ TRANCOUNT > 0

D. If @@ Error = 0

Correct Answer: C
Using TRY...CATCH in a transaction
The following example shows how a TRY...CATCH block works inside a transaction. The statement inside the TRY block generates a constraint
violation error.
BEGIN TRANSACTION;

BEGIN TRY -
-- Generate a constraint violation error.

DELETE FROM Production.Product -


WHERE ProductID = 980;

END TRY -

BEGIN CATCH -

SELECT -

ERROR_NUMBER() AS ErrorNumber -
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;

IF @@TRANCOUNT > 0 -
ROLLBACK TRANSACTION;
END CATCH;

IF @@TRANCOUNT > 0 -
COMMIT TRANSACTION;

GO -
References:
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/try-catch-transact-sql

Question #189 Topic 1

DRAG DROP -
You are developing a training management solution. You run the following Transact-SQL statement:

You need to create an indexed view to return all the courses where the value of TrainerEval is equal to or higher than 8.5.
Which three Transact-SQL segments should you use to develop the solution? To answer, move the appropriate Transact-SQL segments from the
list of Transact-
SQL segments to the answer area and arrange them in the correct order.
Select and Place:
Correct Answer:

References:
https://docs.microsoft.com/en-us/sql/relational-databases/views/create-indexed-views

Question #190 Topic 1

HOTSPOT -
Note: This question is part of a series of questions that use the same scenario. For your convenience, the scenario is repeated in each question.
Each question presents a different goal and answer choices, but the text of the scenario is exactly the same in each question in this series.
You are developing a database to track customer orders. The database contains the following tables: Sales.Customers, Sales.Orders, and
Sales.OrderLines.
The following table describes the columns in Sales.Customers.

The following table describes the columns in Sales.Orders.

The following table describes the columns in Sales.OrderLines.


You need to design an indexed view to return customer information.
What are the requirements for creating an indexed view? Use the drop-down menus to select the answer choice that completes each statement.
Hot Area:

Correct Answer:

Box 1: Deterministic -
The definition of an indexed view must be deterministic. A view is deterministic if all expressions in the select list, as well as the WHERE and
GROUP BY clauses, are deterministic.

Box 2: SCHEMABINDING -
Create the view by using the WITH SCHEMABINDING option.

Box 3: unique clustered -


The first index created on a view must be a unique clustered index.
References:
https://docs.microsoft.com/en-us/sql/relational-databases/views/create-indexed-views
Question #191 Topic 1

You have a database that tracks customer complaints.


The database contains a table named Complaints that includes the following columns:

You need to create a query that lists complaints about defective products. The report must include complaints where the exact phrase "defective
product" occurs, as well as complaints where similar phrases occur.

A.

B.

C.

D.

Correct Answer: D
References:
https://docs.microsoft.com/en-us/sql/t-sql/queries/contains-transact-sql?view=sql-server-2017

  M4x 5 months, 3 weeks ago


as well as
complaints where similar phrases occur. Answer A
upvoted 2 times

  flashed 4 weeks, 1 day ago


where the exact phrase "defective product" ...
upvoted 1 times

  flashed 4 weeks, 1 day ago


FREETEXTTABLE
http://msdn.microsoft.com/en-us/library/ms177652(v=SQL.90).aspx Returns a table
of zero, one, or more rows for those columns containing character-based data
types for values that match the meaning, but not the exact wording, of the text
in the specified freetext_string. FREETEXTTABLE can be referenced in the FROM
clause of a SELECT statement like a regular table name.
upvoted 2 times

  Jiacheng 3 weeks ago


then at least it should be C, not D, since that it is
'defective product' not 'defective' & 'product'
upvoted 1 times

  Patty_attack 4 days, 22 hours ago


"The
report must include complaints where the exact phrase "defective product"
occurs, as well as complaints where similar phrases occur." C would only look
for the exact phrase "defective product" D would contain similar phrases and
also "defective product"
upvoted 1 times

Question #192 Topic 1


Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You create a table named Customer by running the following Transact-SQL statement:

You create a cursor by running the following Transact-SQL statement:

If the credit limit is zero, you must delete the customer record while fetching data.
You need to add the DELETE statement.
Solution: You add the following Transact-SQL statement:

Does the solution meet the goal?

A. Yes

B. No

Correct Answer: B
Use a WHERE CURRENT OF clause, which deletes at the current position of the specified cursor.
References:
https://docs.microsoft.com/en-us/sql/t-sql/statements/delete-transact-sql

Question #193 Topic 1

DRAG DROP -
You are a database administrator for an online retail store. You create a table to track orders by running the following Transact-SQL statement:

You need to create a report that includes the following information:


✑ Total sales for each year
✑ Total sales for each category
✑ Total sales for each category per year
How should you complete the Transact-SQL statement? To answer, drag the appropriate Transact-SQL segment to the correct locations. Each
Transact-SQL segment may be used once, more than once, or not at all. You may need to drag the split bar between panes or scroll to view
content.
NOTE: Each correct selection is worth one point.
Select and Place:

Correct Answer:

Box 1: GROUP BY -

Box 2: CUBE -
GROUP BY CUBE creates groups for all possible combinations of columns. For GROUP BY CUBE (a, b) the results has groups for unique values
of (a, b), (NULL, b), (a, NULL), and (NULL, NULL).
Example: This code runs a GROUP BY CUBE operation on Country and Region.
SELECT Country, Region, SUM(Sales) AS TotalSales

FROM Sales -
GROUP BY CUBE (Country, Region);
References:
https://docs.microsoft.com/en-us/sql/t-sql/queries/select-group-by-transact-sql

  mlourinho 3 months, 2 weeks ago


I disagree, I
think the right answer is ROLLUP
upvoted 1 times

  damirbek369 3 months, 1 week ago


Why
ROLLUP?
upvoted 2 times

  mcfuw 1 month ago


With ROLL UP returns GROUP BY (category_id,
YEAR(OrderDate)) GROUP BY (category_id) GROUP BY () Which means that there is no
Total Sales for each year. Corect answer is GROUP BY CUBE.
upvoted 2 times

  Risheesh 3 weeks, 4 days ago


roll up does
not return all possible result So roll up is not suitable for this
place
upvoted 1 times

Question #194 Topic 1

HOTSPOT -
You are creating a database solution to track sales achievements of your training courses. You run the following statements:

You plan to add courses to a table named HighlightedCourses. You must add courses that have been delivered to more than 100 participants only.
If the total number of participants for a course is lower than 100, the course must not be added to the HighlightedCourses table. In addition, an
error message must be displayed and remaining Transact-SQL code must not run.
How should you complete the Transact-SQL statement? To answer, select the appropriate Transact-SQL segments in the answer area.
NOTE: Each correct selection is worth one point.
Hot Area:

Correct Answer: Explanation


Box 1: THROW -
TRHOW raises an exception and transfers execution to a CATCH block of a TRY...CATCH construct.
If a TRY...CATCH construct is not available, the statement batch is terminated. The line number and procedure where the exception is raised are
set.
Box 2: IF (@TotalParticipants < 100)
Incorrect Answers:
Not BREAK: BREAK exits the current WHILE loop. If the current WHILE loop is nested inside another, BREAK exits only the current loop, and
control is given to the next statement in the outer loop.
Not RAISERROR: Microsoft recommends that THROW should be used instead of RAISERROR.
References:
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/throw-transact-sql

  szolita 1 month, 4 weeks ago


Sorry, but I
do not see any boxes to choose from :(
upvoted 3 times

Question #195 Topic 1

HOTSPOT -
A company creates marketing photographs of products for online retailers. Photographs and related information are stored in a database that has
the following structure:
You must create a report that returns a list of all product photos, and whether the product has a primary photo.
How should you complete the Transact-SQL statement? To answer, select the appropriate Transact-SQL segments in the answer area.
NOTE: Each correct selection is worth one point.
Hot Area:

Correct Answer: Explanation


Box 1: LEFT JOIN -
We want a list of all product photos, and whether the product has a primary photo.

Box 2: FULL OUTER JOIN -


The FULL OUTER JOIN keyword return all records when there is a match in either left (table1) or right (table2) table records.
Box 3: AND

Currently there are no comments in this discussion, be the first to comment!

Question #196 Topic 1

Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that
might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You are building a stored procedure that will be used by hundreds of users concurrently.
You need to store rows that will be processed later by the stored procedure. The object that stores the rows must meet the following
requirements:
✑ Be indexable
✑ Contain up-to-date statistics
✑ Be able to scale between 10 and 100,000 rows
The solution must prevent users from accessing one another's data.
Solution: You create a user-defined table in the stored procedure.
Does this meet the goal?

A. Yes

B. No

Correct Answer: B

Currently there are no comments in this discussion, be the first to comment!

Question #197 Topic 1


DRAG DROP -
You are a developing a solution to manage employee training records. You have the following Transact-SQL statement:

You need to create a stored procedure that returns the total number of participants for a specific course.
How should you complete the procedure? To answer, drag the appropriate Transact-SQL segments to the correct locations. Each Transact-SQL
segment may be used once, more than once, or not at all. You may need to drag the split bar between panes or scroll to view content.
NOTE: Each correct selection is worth one point.
Select and Place:

Correct Answer:

Question #198 Topic 1


You run the following Transact-SQL statement:

You use the table to store data about training courses: when they finished the location, and the number of participants in the courses.
You need to display a result set that shows aggregates for all possible combinations of the number of participants.
Which Transact-SQL statement should you run?

A. SELECT CourseID, CourseDate, SUM(NumParticipants) FROM CourseParticipants GROUP BY CourseID, CourseDate

B. SELECT CourseID, CourseDate, SUM(DISTINCT NumParticipants) FROM CourseParticipants GROUP BY CourseID, CourseDate

C. SELECT CourseID, CourseDate, SUM(NumParticipants) FROM CourseParticipants GROUP BY CourseID, CourseDate WITH CUBE

D. SELECT CourseID, CourseDate, SUM(DISTINCT NumParticipants) FROM CourseParticipants GROUP BY CourseID, CourseDate WITH ROLLUP

Correct Answer: C
The WITH CUBE clause causes the query to compute all possible totals
References:
https://blogs.msdn.microsoft.com/craigfr/2007/09/27/aggregation-with-cube/

Question #199 Topic 1

Note: This question is part of a series of questions that use the same or similar answer choices. An answer choice may be correct for more than
one question in the series. Each question is independent of the other questions in this series. Information and details provided in a question apply
only to that question.
You have a database that contains tables named Customer_CRMSystem and Customer_HRSystem. Both tables use the following structure:

The tables include the data below:

Customer_CRMSystem -

Customer_HRSystem -

Records that contain null values for CustomerCode can be uniquely identified by CustomerName.
You need to display customers who appear in both tables and have a non-null CustomerCode.
Which Transact-SQL statement should you run?
A.

B.

C.

D.

E.

F.

G.

H.

Correct Answer: B
INTERSECT returns distinct rows that are output by both the left and right input queries operator.
Incorrect Answers:
A: INNER JOIN returns records that have matching values in both tables but it returns duplicate records.
C: LEFT OUTER JOIN returns ALL records from the left table, and the matched records from the right table.
D: EXCEPT returns distinct rows from the left input query that are not output by the right input query.
E, F: UNION and UNION ALL combines the results of two or more queries into a single result set that includes all the rows that belong to all
queries in the union.
G: CROSS JOIN returns all possible combinations of data from both tables.
H: FULL OUTER JOIN returns all records when there is a match in either left or right table
Note: NULL values are treated as distinct values in join operations.
References:
https://docs.microsoft.com/en-us/sql/relational-databases/performance/joins?view=sql-server-2017 https://docs.microsoft.com/en-us/sql/t-
sql/language-elements/set-operators-except-and-intersect-transact-sql?view=sql-server-2017 https://docs.microsoft.com/en-us/sql/t-
sql/language-elements/set-operators-union-transact-sql?view=sql-server-2017 https://www.w3schools.com/sql/sql_join.asp

  Dieter 6 months, 3 weeks ago


I dont think
that this is correct. it needs to be inner join since with intersect there are
also NULL values in the customercode included.
upvoted 9 times

  okh 5 months, 2 weeks ago


C is correct
answer
upvoted 1 times

  imran 4 months, 3 weeks ago


INNER JOIN
WILL WORK. INTERSECT LEAVE RECORD WITH NULL.
upvoted 3 times

  fabzo 3 months, 2 weeks ago


None of the
options will work for this question!!!!!!!!!!!
upvoted 3 times

  New_user 2 months, 2 weeks ago


Indeed. B
returns doesn't exlude null values, C returns empty table. A is better answer:
join excludes nulls and values that don't match. But if 'customer name' field
has null values but 'customer code' hasn't, it removes rows that haven't to be
excluded
upvoted 1 times

  anonimdom 1 month, 2 weeks ago


"it removes
rows that haven't to be excluded" - could you please provide an example? As per
the requirement the null values should be excluded.
upvoted 1 times

  anonimdom 1 week, 3 days ago


and 'customer name' can't have null values as per the
table definition in the requirement.
upvoted 1 times

  flashed 4 weeks, 1 day ago


CREATE TABLE #Customer_CRMSystem( CustomerID INT
IDENTITY (1,1) , CustomerCode char(4) , CustomerName VARCHAR(150) ); GO CREATE
TABLE #Customer_HRSystem ( CustomerID INT IDENTITY (1,1) , CustomerCode char(4)
, CustomerName VARCHAR(150) ); GO INSERT INTO #Customer_CRMSystem(CustomerCode,
CustomerName) VALUES ('CUS1', 'Roya') , ('CUS9', 'Almudena') , ('CUS4',
'Jack') , (NULL, 'Jane') , (NULL, 'Francisco'); GO INSERT INTO
#Customer_HRSystem(CustomerCode, CustomerName) VALUES ('CUS1', 'Roya') ,
('CUS2', 'Jose') , ('CUS9', 'Almudena') , (NULL, 'Jane') GO SELECT
C.CustomerCode,C.CustomerName,H.CustomerCode,H.CustomerName FROM
#Customer_CRMSystem C INNER JOIN #Customer_HRSystem H ON C.CustomerCode =
H.CustomerCode AND C.CustomerName=H.CustomerName ; RESULT:
CustomerCode CustomerName CustomerCode CustomerName CUS1 Roya CUS1 Roya
CUS9 Almudena CUS9 Almudena SO, "A" IS A CORRECT ANSWER
upvoted 3 times

Question #200 Topic 1

HOTSPOT -
You are creating a training management application. You run the following Transact-SQL statement:

You must build a report that returns course identifiers and the average evaluation score for each course. The result set must include only one
score for each employee for each course.
You need to create a query that returns the required data.
How should you complete the Transact-SQL statement? To answer, select the appropriate options in the answer area.
NOTE: Each correct selection is worth one point.
Hot Area:

Correct Answer:

  Dieter 6 months, 3 weeks ago


Why not using
AVG(DISTINCT(Eval) in order to fullfill the requirements (only one evaluation
for each customer)?
upvoted 1 times

  fe 2 months, 3 weeks ago


Then the AVG
will be for distinct values in the Eval column. I guess that is not what is
asked in the question
upvoted 2 times

  imran 4 months ago


cant use distinct in group by clause
upvoted 2 times

Question #201 Topic 1


You have a database named MyDb. You run the following Transact-SQL statements:

A value of 1 in the IsActive column indicates that a user is active.


You need to create a count for active users in each role. If a role has no active users, you must display a zero as the active users count.
Which Transact-SQL statement should you run?

A.

B.

C.

D.

Correct Answer: A

  imran 4 months ago


should include isNull function to put zero when role
name gives null
upvoted 1 times

  flashed 4 weeks, 1 day ago


don't need the count goes to zero when it is null.
CREATE TABLE #ROLES( ROLEID INT IDENTITY(1,1) PRIMARY KEY, ROLENAME VARCHAR(20)
) CREATE TABLE #USERS( USERID INT IDENTITY(1,1) PRIMARY KEY, USERNAME
VARCHAR(20), ROLEID INT NULL FOREIGN KEY REFERENCES #ROLES(ROLEID), ISACTIVE BIT
NOT NULL DEFAULT(1) ) INSERT INTO #ROLES VALUES
('ADMIN'),('SERVER'),('MANAGER'),('USER') ; INSERT INTO #USERS VALUES
('HUGO',1,0),('NUNO',2,1),('PEDRO',3,1) ; SELECT * FROM #ROLES SELECT * FROM
#USERS SELECT R.ROLENAME, COUNT(U.USERID) AS ACTIVEUSERCOUNT FROM #ROLES R LEFT
JOIN (SELECT U.USERID,U.ROLEID FROM #USERS U WHERE U.ISACTIVE=1) U ON R.ROLEID =
U.ROLEID GROUP BY R.ROLENAME ; OUTPUT: ROLENAME ACTIVEUSERCOUNT ADMIN 0
MANAGER 1 SERVER 1 USER 0
upvoted 2 times

  Patty_attack 4 days, 1 hour ago


A
should be using a RIGHT JOIN as we want a list of all roles
upvoted 1 times

  supermario 1 day ago


Nope. tbl roles is on the left which will list all
roles.
upvoted 1 times

You might also like