Замораживание данных за квартал служб SSIS

Вы можете абсолютно смешивать страницы ASP с страницами ASP.NET. Я сделал это для внутренних сайтов, где у нас не было времени на редизайн, но нужно было добавить некоторые функции. Обратите внимание, что вы не можете делиться состоянием сеанса между двумя типами страниц (я работал над этим с помощью файлов cookie), но эти две страницы могут жить вместе на одном веб-сайте без проблем.

Часто страницы ASP имеют подключения к базе данных, хранящиеся в файле global.asa или, возможно, в включенном файле или даже прямо внутри самих страниц asp. Было бы полезно, когда вы переносите функциональность, чтобы иметь все эти соединения в одном логическом месте.

Нет прямого преобразования в ASP.NET из ASP, и если у вас еще нет опыта с ASP.NET, было бы полезно изучить некоторые примеры / учебные пособия, чтобы понять, как Веб-сайт ASP.NET работает. Существует множество вариантов подключения к базе данных. Посмотрите на www.asp.net, чтобы узнать о них.

-2
задан Shubham Bhoyar 18 March 2019 в 11:46
поделиться

1 ответ

Лучший способ сделать это - создать таблицу календаря и создать в ней специальный столбец, который сопоставляет каждую отдельную дату с атрибутом «дата замораживания».

Итак, я оставляю вас для исследования календарных таблиц.

А пока, без таблицы календаря, есть кое-что, с чего можно начать.

Во-первых, это выражение дает вам первый месяц в текущем квартале. Итак, если сегодня где-то в течение января-марта, это выражение дает вам 1. Если сегодня где-то в течение октября-декабря, это дает вам 10

SELECT (((MONTH(GETDATE()))-1)/3)*3+1 As FirstMonthInCurrentQuarter

Теперь мы конвертируем это число в фактическую дату первого месяца.

Сначала сгенерируем числовое представление:

SELECT 
   YEAR(GETDATE()) * 10000 +
   ((((MONTH(GETDATE()))-1)/3)*3+1) * 100 +
   1

Мы просто конвертируем это в фактическую дату:

SELECT 
   CONVERT(
       DATE,
           CAST(
            YEAR(GETDATE()) * 10000 +
            ((((MONTH(GETDATE()))-1)/3)*3+1) * 100 +
            1
            AS VARCHAR(8)),
        112)

Это чудовищное выражение, которое можно заменить таблицей календаря.

Если вы запустите его прямо сейчас, вы получите 1 января 2019 года. Если вы запустите его 5 апреля, вы получите 1 апреля. Надеюсь, вы понимаете, как это происходит автоматически.

Теперь мы используем эту дату, чтобы решить, что загрузить в вашу таблицу.

DECLARE @LoadDate DATE

SET @LoadDate = 
   CONVERT(
       DATE,
           CAST(
            YEAR(GETDATE()) * 10000 +
            ((((MONTH(GETDATE()))-1)/3)*3+1) * 100 +
            1
            AS VARCHAR(8)),
        112)

-- Delete all the data in the target table after this date:
DELETE TargetTable WHERE TransactionDate >= @LoadDate;

-- Use your ETL tool to load this in:
INSERT INTO TargetTable (TransactionDate, Amount, Account)
SELECT TransactionDate, Amount, Account 
FROM SourceTable WHERE TransactionDate >= @LoadDate;

В вашем вопросе недостаточно информации для содержательного ответа, но, возможно, это даст вам представление

Вероятность того, что вы никогда не вернетесь, составляет 95%.

0
ответ дан Nick.McDermaid 18 March 2019 в 11:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: