Значения по умолчанию (Defaults) и пользовательские типы данных на их основе
· Значения по умолчанию – date: по умолчанию присваивается текущая дата. Пользовательский тип данных – type_date.
CREATE DEFAULT [dbo].[date] AS GETDATE()
Рис. 16. Пользовательский тип данных – type_date
· Значения по умолчанию – year: по умолчанию присваивается значение текущего года. Пользовательский тип данных – type_year.
CREATE DEFAULT [dbo].[year] AS YEAR (GETDATE())
Рис.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]'
Рис.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]'
Рис.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]
Результат выполнения:
Рис.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]
Результат выполнения:
Рис.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]
Результат выполнения:
Рис.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
Результат выполнения:
Рис.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
Результат выполнения:
Рис.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()))
Результат выполнения:
Рис.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()))
Результат выполнения:
Рис.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)
Результат выполнения:
Рис.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
Результат выполнения:
Рис.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)
Результат выполнения:
Рис.29. Представление profit_from_sales_shops