برنامه نویسی

پیگیری عملیات تولید نتیجه پیشرفت با تهی های مشروط: SQL در مقابل SPL

یک جدول پایگاه داده SQL Server ، پیشرفت اجرای چندین عملیات در یک فرآیند تولید را توصیف می کند. هنگامی که نتیجه OP 0 باشد ، نشانگر شکست اجرای است و باید تا نتیجه 1 ادامه یابد. این نشانگر اجرای موفقیت آمیز است و OP بعدی باید به ترتیب اجرا شود.

شرح تصویر
اکنون باید پیشرفت اجرای عملیات را پیگیری کنیم: هر عملیات یک زمینه را اشغال می کند ، و ترتیب میدانی نشان دهنده پیشرفت اجرای عملیات است. هنگامی که یک عملیات نتواند اجرا کند ، باید وارد مرحله ردیابی بعدی شود ، یعنی تولید یک رکورد جدید. پیشرفت 1 (در صورت وجود) از عملیات موفق قبلی را قبل از ادامه این عملیات کپی کنید. اگر این بار این عمل موفقیت آمیز باشد ، عملیات بعدی در مرحله ردیابی فعلی ادامه خواهد یافت.

شرح تصویر

SQL

  SELECT  CASE WHEN max(OP) > 1 THEN 1 ELSE MAX(CASE WHEN OP = 1 THEN Outcome END) END AS OP1
,   CASE WHEN max(OP) > 2 THEN 1 ELSE MAX(CASE WHEN OP = 2 THEN Outcome END) END AS OP2
,   CASE WHEN max(OP) > 3 THEN 1 ELSE MAX(CASE WHEN OP = 3 THEN Outcome END) END AS OP3
,   CASE WHEN max(OP) > 4 THEN 1 ELSE MAX(CASE WHEN OP = 4 THEN Outcome END) END AS OP4
,   CASE WHEN max(OP) > 5 THEN 1 ELSE MAX(CASE WHEN OP = 5 THEN Outcome END) END AS OP5
FROM    (
    SELECT  *
    ,   sum(flag) OVER(ORDER BY OP, Outcome rows BETWEEN unbounded preceding AND CURRENT row) AS counter

    FROM    (
        SELECT  *
        ,   CASE WHEN (lag(outcome) OVER(ORDER BY op,outcome) = outcome AND outcome = 1) OR (lag(outcome) OVER(ORDER BY op,outcome) <> outcome AND outcome = 0)
                THEN 0
                ELSE 1
            END AS flag
        FROM    Operations
        ) x
    ) x
GROUP BY x.counter

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

SQL مکانیسمی برای گروه بندی منظم بر اساس شرایط ندارد و در عوض سوابق اصلی را به مراحل مختلف ردیابی تقسیم می کند ، و نیاز به استفاده از زیرمجموعه های تو در تو و توابع چند پنجره برای علامت گذاری دارد. SQL معمولی همچنین فاقد نحو برای زمینه های تولید پویا است و فقط می تواند به سختی یک مورد را برای هر زمینه بنویسد. زمینه های تولید پویا به استفاده از SQL پویا نیاز دارند.

کد SPL ساده و آسان برای درک است. try.demo

شرح تصویر

داده های بار A1.

A2 : به صورت پویا یک جدول دو بعدی تولید می کند.

A3 : گروه بندی بر اساس شرایط ، هنگامی که آخرین نتیجه اعدام شکست خورد ، گروه جدیدی تشکیل شد ، کجا [-1] نماینده قبلی را نشان می دهد. توجه داشته باشید که در اینجا هیچ تجمع فوری وجود ندارد.

A4 : داده های هر گروه را حلقه کرده و یک رکورد را به طور همزمان با توجه به قوانین اضافه کنید. در ابتدا حدود 1s را پر کنید و دنباله نتیجه این گروه در پایان.

SPL بدون منبع باز و آدرس منبع باز است
بارگیری رایگان

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا