Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Denislava91 avatar Denislava91 5 Точки

11.Hours to Complete Database Basics MS SQL Exam 8 April 2021

Здравейте,

 

Някой ако сподели решение на тази на пръв поглед лесна задача, много ще съм благодарна.

1во не мога да разбера дали трябва да връща само една стойност или няколко, както е показано на примера. Според условието би трябвало да е една. 

Не мога да си представя и как да проверя по отделно дали датата на започване и прикл'чване са нула.

CREATE FUNCTION udf_HoursToComplete(@StartDate DATETIME, @EndDate DATETIME)
RETURNS INT
BEGIN

DECLARE @result INT=(
SELECT
IIF(DATEDIFF(HOUR,@StartDate,@EndDate)IS NULL,0,DATEDIFF(HOUR,@StartDate,@EndDate))
FROM Reports);

RETURN @result;
END

 

Предварително благодаря.

 

Тагове:
0
Module: C# DB
icowwww avatar icowwww 2673 Точки
Best Answer

Здравей,

В примера е показано, че твоята функия ще се извиква за всеки ред в Reports. Трябва да връща една стойност, както е показано в примера. А ти правиш селекция върху Reports, и съответно връщаш една и съща стойност за всеки ред в тази таблица. Реално процедурата няма нищо общо с таблицата, тя просто приема 2 стойности и връща една.

Най-лесно можеш да поправиш това като изтриеш FROM Reports:

CREATE FUNCTION udf_HoursToComplete(@StartDate DATETIME, @EndDate DATETIME)
RETURNS INT
BEGIN

DECLARE @result INT=(
SELECT
IIF(DATEDIFF(HOUR,@StartDate,@EndDate)IS NULL,0,DATEDIFF(HOUR,@StartDate,@EndDate))
);

RETURN @result;
END

 

0
16/10/2021 21:36:43
Denislava91 avatar Denislava91 5 Точки

Благодаря ти!

 

Много си прав, то това е смисълът на процедурата, да не е обвързана с конкретна таблица и да работи в общия случай:)

 

Поздрави.

 

Дени

0
18/10/2021 11:20:21
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.