Значения по умолчанию (Defaults) и пользовательские типы данных на их основе

· Значения по умолчанию – date: по умолчанию присваивается текущая дата. Пользовательский тип данных – type_date.

CREATE DEFAULT [dbo].[date] AS GETDATE()

Значения по умолчанию (Defaults) и пользовательские типы данных на их основе - student2.ru

Рис. 16. Пользовательский тип данных – type_date

· Значения по умолчанию – year: по умолчанию присваивается значение текущего года. Пользовательский тип данных – type_year.

CREATE DEFAULT [dbo].[year] AS YEAR (GETDATE())

Значения по умолчанию (Defaults) и пользовательские типы данных на их основе - student2.ru

Рис.17. Пользовательский тип данных – type_year

Правила (Rule)s и пользовательские типы данных на их основе

· Правило – rule_number_payers_recipients: переменная, к которой применено данное правило шестизначная, каждый знак только цифра. Пользовательский тип данных – type_number_payers_recipients.

CREATE RULE [dbo].[rule_number_payers_recipients] AS @number_payers_recipients LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]'

Значения по умолчанию (Defaults) и пользовательские типы данных на их основе - student2.ru

Рис.18. Пользовательский тип данных – type_number_payers_recipients

· Правило – rule_account: переменная, к которой применено данное правило состоит из четырех символов, первые два из которых цифры от 0 до 9, третий точка, а четвертый цифра от 0 до 9. Пользовательский тип данных – type_accuonts.

CREATE RULE [dbo].[rule_account] AS @account LIKE '[0-9][0-9].[0-9]'

Значения по умолчанию (Defaults) и пользовательские типы данных на их основе - student2.ru

Рис.19. Пользовательский тип данных – type_accuonts

Запросы

· Запрос формирует список приходных ордеров, по которым в прошлом месяце зафиксировано поступление в кассу наличных денежных средств от покупателей-клиентов.

Программный код:

SELECT [№_arrival_warrant],

CONVERT(CHAR(11),date) AS date,

sum,

foundationKt AS foundation,

name_organisation

FROM arrival_warrant,

payers,

accuonts

WHERE arrival_warrant.[№_account]='62.1'

AND arrival_warrant.[№_payer]=payers.[№_payer]

AND arrival_warrant.[№_account]=accuonts.[№_account]

AND MONTH(date)=MONTH(GETDATE())-1

ORDER BY [№_arrival_warrant]

Результат выполнения:

Значения по умолчанию (Defaults) и пользовательские типы данных на их основе - student2.ru

Рис.20. Запрос «Поступления за прошедший месяц от покупателей»

· Запрос формирует список расходных ордеров, по которым в прошлом месяце выданы из кассы наличные денежные средства подотчетным лицам.

Программный код:

SELECT [№_expense_warrant],

CONVERT(CHAR(11),date) AS date,

sum,

foundationDt AS foundation,

name_recipient,

post

FROM expense_warrant,

recipients,

accuonts

WHERE expense_warrant.[№_account] IN (71.1, 71.2, 71.3)

AND expense_warrant.[№_recipient]=recipients.[№_recipient]

AND expense_warrant.[№_account]=accuonts.[№_account]

AND MONTH(date)=MONTH(GETDATE())-1

ORDER BY [№_expense_warrant]

Результат выполнения:

Значения по умолчанию (Defaults) и пользовательские типы данных на их основе - student2.ru

Рис.21. Запрос «Выдача за прошедший месяц подотчетным лицам»

· Запрос формирует список расходных ордеров, по которым в прошлом месяце выданы из кассы наличные денежные средства подотчетным лицам для предстоящей командировки.

Программный код:

SELECT [№_expense_warrant],

name_recipient,

post,

sum

FROM expense_warrant,

recipients

WHERE [№_account]='71.2'

AND expense_warrant.[№_recipient]=recipients.[№_recipient]

AND MONTH(date)=MONTH(GETDATE())-1

ORDER BY [№_expense_warrant]

Результат выполнения:

Значения по умолчанию (Defaults) и пользовательские типы данных на их основе - student2.ru

Рис.22. Запрос «Выдача за прошедший месяц подотчетным лицам для предстоящей командировки»

· Запрос отображает итоговые суммы расходов по дням в течение прошедшего месяца.

Программный код:

SELECT CONVERT(CHAR(11),date) AS date,

SUM(sum)AS total

FROM expense_warrant

GROUP BY date

HAVING MONTH(date)=MONTH(GETDATE())-1

ORDER BY date

Результат выполнения:

Значения по умолчанию (Defaults) и пользовательские типы данных на их основе - student2.ru

Рис.23. Запрос «расход по дням в течение прошедшего месяца.»

· Запрос отображает итоговые суммы приходов по дням в течение прошедшего месяца.

Программный код:

SELECT CONVERT(CHAR(11),date) AS date,

SUM(sum)AS total

FROM arrival_warrant

GROUP BY date

HAVING MONTH(date)=MONTH(GETDATE())-1

ORDER BY date

Результат выполнения:

Значения по умолчанию (Defaults) и пользовательские типы данных на их основе - student2.ru

Рис.24. Запрос «приход по дням в течение прошедшего месяца»

Представления (Views)

· Представление – arrival_document: отображает полную информацию по приходным ордерам.

Программный код:

ALTER VIEW arrival_document AS

SELECT arrival_warrant.[№_arrival_warrant],

arrival_warrant.date,

arrival_warrant.sum,

accuonts.[№_account],

accuonts.foundationKt AS comment,

(payers.name_organisation+' '+payers.FIO) AS payers

FROM accuonts INNER JOIN arrival_warrant

ON accuonts.[№_account] =arrival_warrant.[№_account]

INNER JOIN payers

ON arrival_warrant.[№_payer] = payers.[№_payer]

WHERE (YEAR(arrival_warrant.date) = YEAR(GETDATE()))

Результат выполнения:

Значения по умолчанию (Defaults) и пользовательские типы данных на их основе - student2.ru

Рис.25. Представление arrival_document

· Представление – expense_document: отображает полную информацию по расходным ордерам.

Программный код:

CREATE VIEW expense_document AS

SELECT expense_warrant.[№_expense_warrant],

expense_warrant.date,

expense_warrant.sum,

expense_warrant.[№_account],

accuonts.foundationDt AS comment,

recipients.name_recipient

FROM expense_warrant INNER JOIN accuonts

ON expense_warrant.[№_account] = accuonts.[№_account]

INNER JOIN recipients

ON expense_warrant.[№_recipient] = recipients.[№_recipient]

WHERE (YEAR(dbo.expense_warrant.date) = YEAR(GETDATE()))

Результат выполнения:

Значения по умолчанию (Defaults) и пользовательские типы данных на их основе - student2.ru

Рис.26. Представление expense_document

· Представление – balanse: отображает соотношение расходов и доходов по дням за прошедший месяц.

Программный код:

CREATE VIEW balanse AS

SELECT arrival_warrant.date,

SUM(DISTINCT arrival_warrant.sum) AS arrival_sum,

SUM(DISTINCT expense_warrant.sum) AS expense_sum,

SUM(DISTINCT dbo.arrival_warrant.sum) - SUM(DISTINCT expense_warrant.sum) AS balanse

FROM arrival_warrant INNER JOIN expense_warrant

ON arrival_warrant.date = expense_warrant.date

GROUP BY arrival_warrant.date, expense_warrant.date

HAVING(MONTH(expense_warrant.date) = MONTH(GETDATE()) - 1)

Результат выполнения:

Значения по умолчанию (Defaults) и пользовательские типы данных на их основе - student2.ru

Рис.27. Представление balanse

· Представление – profit_from_sales_past_month: отображает прибыль по магазинам за последний месяц.

Программный код:

CREATE VIEW profit_from_sales_past_month AS

SELECT payers.name_organisation,

SUM(arrival_warrant.sum) AS total

FROM arrival_warrant INNER JOIN payers

ON arrival_warrant.[№_payer] = payers.[№_payer]

WHERE (MONTH(arrival_warrant.date) = MONTH(GETDATE()) - 1)

AND (arrival_warrant.[№_account] = '90.1')

GROUP BY payers.name_organisation

ORDER BY payers.name_organisation

Результат выполнения:

Значения по умолчанию (Defaults) и пользовательские типы данных на их основе - student2.ru

Рис.28. Представление profit_from_sales_past_month

· Представление – profit_from_sales_shops: отображает прибыль по магазинам за каждый месяц.

Программный код:

CREATE VIEW profit_from_sales_shops AS

SELECT payers.name_organisation,

SUM(arrival_warrant.sum) AS total,

MONTH(arrival_warrant.date) AS month

FROM arrival_warrant INNER JOIN payers

ON arrival_warrant.[№_payer] = payers.[№_payer]

WHERE (arrival_warrant.[№_account] = '90.1')

GROUP BY payers.name_organisation, MONTH(arrival_warrant.date)

Результат выполнения:

Значения по умолчанию (Defaults) и пользовательские типы данных на их основе - student2.ru

Рис.29. Представление profit_from_sales_shops

Наши рекомендации