نمایش نتایج 1 تا 11 از 11

نام تاپیک: جدول موقت در شبكه

  1. #1

    جدول موقت در شبكه

    سلام
    من براي هر كاربر محاسباتي انجام ميدم و نتايجو هم داخل جدول موقت ميريزم Tميخواستم بدونم هر كاربر كه مياد جدول موقت رو ايجاد ميكنه تداخل پيش نمياد تو داده هاش؟)
    اسم جدول هم براي همشون يكي هست

  2. #2
    کاربر دائمی
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    تهران
    سن
    62
    پست
    293

    نقل قول: جدول موقت در شبكه

    اگر اسم جدولت فقط یک # اولش دارد، آن وقت مشکلی پیش نخواهد آمد.

  3. #3

    نقل قول: جدول موقت در شبكه

    سلام.جهت افزایش بازدهی پیشنهاد میشه زیاد از جداول موقت استفاده نکنید به جای اون نحوه محاسباتتون رو عوض کنید و مثلا از Derived Table ها استفاده کنید.
    موفق باشید

  4. #4

    نقل قول: جدول موقت در شبكه

    مرسي آقاي صادقيان روش جالي بود ياد گرفتم ولي من دارم كرسر رو با جدول موقت پياده سازي ميكنم-
    علامت # درسته ولي چطور براي تمام كاربران كه وارد شدن يه جدول ميسازه كه همشون هم همزمان فعال هستن ؟(يه نام جدول كه برايتمام كاربرا ايجاد ميشه؟)
    چرا تويه query analys ميخواي ايجاد كني ميگه تكراريه اين كدي كه براي شناسه هر كاربر ايجاد ميكنه بر چه اساسي هست

  5. #5

    نقل قول: جدول موقت در شبكه

    سلام. به این روش ایجاد میشه.
    A temporary table is created and populated on disk, in the system database tempdb — with a session-specific identifier packed onto the name, to differentiate between similarly-named #temp tables created from other sessions.
    ولی پیشنهاد من اینه که شما روش کارتون رو عوض کنید چون خود کرسر باعث کاهش سرعت کوئری شما خواهد شد و استفاده از جداول موقت نیز برهمین کاهش ، می افزاید .
    شما اگر نوع کوئری که میخواهید بدست بیارید رو اینجا مطرح کنید شاید کوئری بهتری برای اونکار ارائه بشه.
    موفق باشید

  6. #6

    نقل قول: جدول موقت در شبكه

    مرسي ولي من كارم طوري هست كه حتما بايد سطرها رو پيمايش كنم(ميخوام چند سطر بخونم و يه سط كنم در جند ستون مقداريشو) جاهاي كه اطلاعات كم بود از متغير جدولي استفاده كرم اصلش از موقت ضمنا چون ديتابيس نگين هست و با 400 هزار ركورد و ممكن هست كار هر كاربر طول بكشه براي ساختن اين گزارش براي هر كدوم در اول گزارش يه جدول موقت ميگيرم تا همشون همزمان بتون كار كنن
    راستي من بجاي كرسر از جدول موقت استفاه كردم همون روش set base
    آخرین ویرایش به وسیله mehdis2 : چهارشنبه 21 مهر 1389 در 01:23 صبح

  7. #7

    نقل قول: جدول موقت در شبكه

    سلام.اگر میتونستید ساختار جداول رو با چند نمونه اطلاعات اینجا میذاشتید راههای بهتری پیشنهاد میشد.مثلا اگر از نسخه 2005 به بالا استفاده میکنید میتونید از CTE استفاده کنید که از Cursor سریعتر هست.و بازدهی بیشتری داره.
    همچنین در نسخه 2000 میتونید با استفاده از توابع و Select های تودرتو اینکارو انجام بدید.نمونه همین کارو من برای چندتا از گزارشاتم انجام دادم و با رکوردهای بالا هم سرعت خوبی داشتند.
    موفق باشید

  8. #8
    کاربر دائمی آواتار M.YasPro
    تاریخ عضویت
    آبان 1386
    محل زندگی
    Kernel
    پست
    1,171

    نقل قول: جدول موقت در شبكه

    سلام
    میشه در مورد CTE توی این زمینه توضیح بدید

  9. #9

    نقل قول: جدول موقت در شبكه

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go














    ALTER PROCEDURE [dbo].[Rep_Day_Result]
    @EXPDate_Start nvarchar(10),
    @EXPDate_End nvarchar(10),
    @PGMyKey INT,
    @EXPGMyKey INT,
    @InsMyKey INT ,
    @Is_Avg BIT,
    @Rows_Inst INT OUTPUT
    AS
    BEGIN
    SET NOCOUNT ON;
    declare @EXPTime_master nchar(10);

    declare @EXPInsName_master nchar(10);
    declare @EXPTime nchar(10);
    declare @EXPValue nchar(10);
    declare @EXPTName nchar(10);
    declare @EXPInsName nchar(10);
    DECLARE @F1 nchar(10);
    DECLARE @F2 nchar(10);
    DECLARE @F3 nchar(10);
    DECLARE @F4 nchar(10);

    DECLARE @F5 nchar(10);
    DECLARE @F6 nchar(10);
    DECLARE @F7 nchar(10);
    DECLARE @F8 nchar(10);
    DECLARE @F9 nchar(10);
    DECLARE @F10 nchar(10);
    DECLARE @F11 nchar(10);
    DECLARE @F12 nchar(10);
    DECLARE @F13 nchar(10);
    DECLARE @F14 nchar(10);

    DECLARE @F15 nchar(10);

    DECLARE @test INT;


    DECLARE @P nchar(10);
    DECLARE @Row int;
    DECLARE @Row_Number int;
    DECLARE @EXPGName1 nchar(20);
    DECLARE @EXPGName2 nchar(20);
    DECLARE @EXPGName3 nchar(20);
    DECLARE @EXPGName4 nchar(20);

    DECLARE @EXPGName5 nchar(20);
    DECLARE @EXPGName6 nchar(20);
    DECLARE @EXPGName7 nchar(20);
    DECLARE @EXPGName8 nchar(20);
    DECLARE @EXPGName9 nchar(20);
    DECLARE @EXPGName10 nchar(20);
    DECLARE @Name nchar(20);
    DECLARE @EXPGName11 nchar(20);
    DECLARE @EXPGName12 nchar(20);
    DECLARE @EXPGName13 nchar(20);
    DECLARE @EXPGName14 nchar(20);

    DECLARE @EXPGName15 nchar(20);

    DECLARE @EXPTMyKey1 int;
    DECLARE @EXPTMyKey2 int;
    DECLARE @EXPTMyKey3 int;
    DECLARE @EXPTMyKey4 int;

    DECLARE @EXPTMyKey5 int;
    DECLARE @EXPTMyKey6 int;
    DECLARE @EXPTMyKey7 int;
    DECLARE @EXPTMyKey8 int;
    DECLARE @EXPTMyKey9 int;
    DECLARE @EXPTMyKey10 int;
    DECLARE @EXPTMyKey11 int;
    DECLARE @EXPTMyKey12 int;
    DECLARE @EXPTMyKey13 int;
    DECLARE @EXPTMyKey14 int;
    DECLARE @EXPTMyKey15 int;


    DELETE FROM ExpRep_Day_Result_Tittle_Tmp
    IF EXISTS (SELECT * FROM tem_rep )
    BEGIN
    DELETE FROM ExpRep_Day_Result_Tittle_Tmp WHERE 1=1
    DELETE FROM tem_rep
    END

    SET @test=0;
    Create table #All_EXPTName
    ([InsMyKey] INT PRIMARY KEY ,
    [F] [nchar](5) ,
    )
    DECLARE @EXPTMyKey_cr nchar(5);
    DECLARE @EXPTName_cr nchar(20);
    DECLARE @Number_Filed INT;
    SET @Number_Filed=1
    --DEALLOCATE cr_All_EXPTName
    IF (@InsMyKey IS NOT NULL )
    BEGIN
    DECLARE cr_All_EXPTName CURSOR FOR SELECT DISTINCT EXPTMyKey, EXPTName FROM TempRep1 WHERE EXPDate>=@EXPDate_Start AND
    EXPDate<=@EXPDate_end and
    pgmykey=@PGMyKey AND EXPGMyKey=@EXPGMyKey AND EXPInsMyKey=@InsMyKey
    --AND EXPValue IS NOT NULL
    ORDER BY EXPTName
    OPEN cr_All_EXPTName


    END
    ELSE IF 1=1
    BEGIN
    DECLARE cr_All_EXPTName CURSOR FOR SELECT DISTINCT EXPTMyKey, EXPTName FROM TempRep1 WHERE EXPDate>=@EXPDate_Start AND
    EXPDate<=@EXPDate_end and
    pgmykey=@PGMyKey AND EXPGMyKey=@EXPGMyKey AND EXPInsMyKey IS NULL
    --ND EXPValue IS NOT NULL
    ORDER BY EXPTName
    OPEN cr_All_EXPTName


    END


    FETCH NEXT FROM cr_All_EXPTName INTO @EXPTMyKey_cr,@EXPTName_cr
    WHILE @@FETCH_STATUS = 0
    BEGIN
    INSERT INTo #All_EXPTName
    (InsMyKey, F) VALUES ( @EXPTMyKey_cr,@Number_Filed)

    IF (@Number_Filed=1)
    BEGIN
    set @EXPGName1=@EXPTName_cr
    SET @EXPTMyKey1=@EXPTMyKey_cr
    END

    ELSE IF (@Number_Filed=2)
    BEGIN
    set @EXPGName2=@EXPTName_cr
    set @EXPTMyKey2=@EXPTMyKey_cr
    END

    ELSE IF (@Number_Filed=3)
    BEGIN
    set @EXPGName3=@EXPTName_cr
    SET @EXPTMyKey3=@EXPTMyKey_cr
    END
    ELSE IF (@Number_Filed=4)
    BEGIN
    set @EXPGName4=@EXPTName_cr
    set @EXPTMyKey4=@EXPTMyKey_cr
    END

    ELSE IF (@Number_Filed=5)
    BEGIN
    set @EXPGName5=@EXPTName_cr
    set @EXPTMyKey5=@EXPTMyKey_cr
    END

    IF (@Number_Filed=6)
    BEGIN
    set @EXPGName6=@EXPTName_cr
    set @EXPTMyKey6=@EXPTMyKey_cr
    END

    ELSE IF (@Number_Filed=7)
    BEGIN
    set @EXPGName7=@EXPTName_cr
    set @EXPTMyKey7=@EXPTMyKey_cr
    END

    ELSE IF (@Number_Filed=8)
    BEGIN
    set @EXPGName8=@EXPTName_cr
    set @EXPTMyKey8=@EXPTMyKey_cr
    END

    ELSE IF (@Number_Filed=9)
    BEGIN
    set @EXPGName9=@EXPTName_cr
    set @EXPTMyKey9=@EXPTMyKey_cr
    END

    ELSE IF (@Number_Filed=10)
    BEGIN
    set @EXPGName10=@EXPTName_cr
    set @EXPTMyKey10=@EXPTMyKey_cr
    END

    ELSE IF (@Number_Filed=11)
    BEGIN
    set @EXPGName11=@EXPTName_cr
    SET @EXPTMyKey11=@EXPTMyKey_cr
    END

    ELSE IF (@Number_Filed=12)
    BEGIN
    set @EXPGName12=@EXPTName_cr
    SET @EXPTMyKey12=@EXPTMyKey_cr
    END

    ELSE IF (@Number_Filed=13)
    BEGIN
    set @EXPGName13=@EXPTName_cr
    SET @EXPTMyKey13=@EXPTMyKey_cr
    END

    ELSE IF (@Number_Filed=14)
    BEGIN
    set @EXPGName14=@EXPTName_cr
    SET @EXPTMyKey14=@EXPTMyKey_cr
    END

    ELSE IF (@Number_Filed=15)
    BEGIN
    set @EXPGName15=@EXPTName_cr
    SET @EXPTMyKey15=@EXPTMyKey_cr
    END




    FETCH NEXT FROM cr_All_EXPTName INTO @EXPTMyKey_cr,@EXPTName_cr
    SET @Number_Filed=@Number_Filed+1
    END


    CLOSE cr_All_EXPTName
    DEALLOCATE cr_All_EXPTName


    ---قرار دادن كد هاي آزمايشات در رديف اول جدول
    INSERT INTO tem_rep
    (
    ROW_NUMBER,F1,F2,F3,F4,F5,F6,F7,F8,F9, F10, F11, F12, F13, F14, F15
    )
    VALUES
    (
    0,null,NULL,@EXPTMyKey1,@EXPTMyKey2,@EXPTMyKey3,@E XPTMyKey4,@EXPTMyKey5,@EXPTMyKey6,@EXPTMyKey7,@EXP TMyKey8,@EXPTMyKey9, @EXPTMyKey10, @EXPTMyKey11, @EXPTMyKey12, @EXPTMyKey13
    )
    DECLARE @EXPDate nchar(10);
    --- get unit
    DECLARE @UnitFkey int;

    IF @EXPTMyKey1 IS NOT NULL
    BEGIN

    SET @UnitFkey=-1;
    SELECT @UnitFkey=eiu.UnitFkey FROM ExpInsUnits eiu WHERE eiu.PGFkey=@PGMyKey AND eiu.EGETFkey=(SELECT ee.MyKey FROM EXPGroupsEXPTypes ee WHERE ee.EXPGroupFkey=@EXPGMyKey AND ee.EXPTypeFkey=@EXPTMyKey1)
    IF @UnitFkey =-1
    SELECT @UnitFkey=pge.UnitTypeFkey FROM ProductGroupsEXPTypes pge WHERE pge.EXPTypesFkey=@EXPTMyKey1 AND pge.ProductGroupsFkey=@PGMyKey

    IF (@UnitFkey <>-1)
    BEGIN
    select @EXPGName1=rtrim(ltrim(@EXPGName1))+'('+rtrim(ltri m(ut.Name))+')' FROM UnitTypes ut WHERE ut.MyKey= @UnitFkey
    END;

    END

    --2
    IF @EXPTMyKey1 IS NOT NULL
    BEGIN
    SELECT @UnitFkey=eiu.UnitFkey FROM ExpInsUnits eiu WHERE eiu.PGFkey=@PGMyKey AND eiu.EGETFkey=(SELECT ee.MyKey FROM EXPGroupsEXPTypes ee WHERE ee.EXPGroupFkey=@EXPGMyKey AND ee.EXPTypeFkey=@EXPTMyKey2)
    IF @UnitFkey =-1
    SELECT @UnitFkey=pge.UnitTypeFkey FROM ProductGroupsEXPTypes pge WHERE pge.EXPTypesFkey=@EXPTMyKey2 AND pge.ProductGroupsFkey=@PGMyKey

    IF (@UnitFkey <>-1)
    BEGIN

    select @EXPGName2=rtrim(ltrim(@EXPGName2))+'('+rtrim(ltri m(ut.Name))+')' FROM UnitTypes ut WHERE ut.MyKey= @UnitFkey

    END;
    END;
    --3
    IF @EXPTMyKey3 IS NOT NULL
    BEGIN
    SELECT @UnitFkey=eiu.UnitFkey FROM ExpInsUnits eiu WHERE eiu.PGFkey=@PGMyKey AND eiu.EGETFkey=(SELECT ee.MyKey FROM EXPGroupsEXPTypes ee WHERE ee.EXPGroupFkey=@EXPGMyKey AND ee.EXPTypeFkey=@EXPTMyKey3)
    IF @UnitFkey =-1
    SELECT @UnitFkey=pge.UnitTypeFkey FROM ProductGroupsEXPTypes pge WHERE pge.EXPTypesFkey=@EXPTMyKey3 AND pge.ProductGroupsFkey=@PGMyKey

    IF (@UnitFkey <>-1)
    BEGIN
    select @EXPGName3=rtrim(ltrim(@EXPGName3))+'('+rtrim(ltri m(ut.Name))+')' FROM UnitTypes ut WHERE ut.MyKey= @UnitFkey

    END;
    END;
    IF @EXPTMyKey4 IS NOT NULL
    BEGIN

    SET @UnitFkey=-1;
    SELECT @UnitFkey=eiu.UnitFkey FROM ExpInsUnits eiu WHERE eiu.PGFkey=@PGMyKey AND eiu.EGETFkey=(SELECT ee.MyKey FROM EXPGroupsEXPTypes ee WHERE ee.EXPGroupFkey=@EXPGMyKey AND ee.EXPTypeFkey=@EXPTMyKey1)
    IF @UnitFkey =-1
    SELECT @UnitFkey=pge.UnitTypeFkey FROM ProductGroupsEXPTypes pge WHERE pge.EXPTypesFkey=@EXPTMyKey1 AND pge.ProductGroupsFkey=@PGMyKey

    IF (@UnitFkey <>-1)
    BEGIN
    select @EXPGName4=rtrim(ltrim(@EXPGName4))+'('+rtrim(ltri m(ut.Name))+')' FROM UnitTypes ut WHERE ut.MyKey= @UnitFkey
    END;

    END
    --ستون 5
    IF @EXPTMyKey5 IS NOT NULL
    BEGIN

    SET @UnitFkey=-1;
    SELECT @UnitFkey=eiu.UnitFkey FROM ExpInsUnits eiu WHERE eiu.PGFkey=@PGMyKey AND eiu.EGETFkey=(SELECT ee.MyKey FROM EXPGroupsEXPTypes ee WHERE ee.EXPGroupFkey=@EXPGMyKey AND ee.EXPTypeFkey=@EXPTMyKey5)
    IF @UnitFkey =-1
    SELECT @UnitFkey=pge.UnitTypeFkey FROM ProductGroupsEXPTypes pge WHERE pge.EXPTypesFkey=@EXPTMyKey5 AND pge.ProductGroupsFkey=@PGMyKey

    IF (@UnitFkey <>-1)
    BEGIN
    select @EXPGName5=rtrim(ltrim(@EXPGName5))+'('+rtrim(ltri m(ut.Name))+')' FROM UnitTypes ut WHERE ut.MyKey= @UnitFkey
    END;

    END

    --ستون 6
    IF @EXPTMyKey6 IS NOT NULL
    BEGIN

    SET @UnitFkey=-1;
    SELECT @UnitFkey=eiu.UnitFkey FROM ExpInsUnits eiu WHERE eiu.PGFkey=@PGMyKey AND eiu.EGETFkey=(SELECT ee.MyKey FROM EXPGroupsEXPTypes ee WHERE ee.EXPGroupFkey=@EXPGMyKey AND ee.EXPTypeFkey=@EXPTMyKey6)
    IF @UnitFkey =-1
    SELECT @UnitFkey=pge.UnitTypeFkey FROM ProductGroupsEXPTypes pge WHERE pge.EXPTypesFkey=@EXPTMyKey6 AND pge.ProductGroupsFkey=@PGMyKey

    IF (@UnitFkey <>-1)
    BEGIN
    select @EXPGName6=rtrim(ltrim(@EXPGName6))+'('+rtrim(ltri m(ut.Name))+')' FROM UnitTypes ut WHERE ut.MyKey= @UnitFkey
    END;

    END
    --ستون 7
    IF @EXPTMyKey7 IS NOT NULL
    BEGIN

    SET @UnitFkey=-1;
    SELECT @UnitFkey=eiu.UnitFkey FROM ExpInsUnits eiu WHERE eiu.PGFkey=@PGMyKey AND eiu.EGETFkey=(SELECT ee.MyKey FROM EXPGroupsEXPTypes ee WHERE ee.EXPGroupFkey=@EXPGMyKey AND ee.EXPTypeFkey=@EXPTMyKey7)
    IF @UnitFkey =-1
    SELECT @UnitFkey=pge.UnitTypeFkey FROM ProductGroupsEXPTypes pge WHERE pge.EXPTypesFkey=@EXPTMyKey7 AND pge.ProductGroupsFkey=@PGMyKey

    IF (@UnitFkey <>-1)
    BEGIN
    select @EXPGName7=rtrim(ltrim(@EXPGName7))+'('+rtrim(ltri m(ut.Name))+')' FROM UnitTypes ut WHERE ut.MyKey= @UnitFkey
    END;

    END
    --ستون 8
    IF @EXPTMyKey8 IS NOT NULL
    BEGIN

    SET @UnitFkey=-1;
    SELECT @UnitFkey=eiu.UnitFkey FROM ExpInsUnits eiu WHERE eiu.PGFkey=@PGMyKey AND eiu.EGETFkey=(SELECT ee.MyKey FROM EXPGroupsEXPTypes ee WHERE ee.EXPGroupFkey=@EXPGMyKey AND ee.EXPTypeFkey=@EXPTMyKey8)
    IF @UnitFkey =-1
    SELECT @UnitFkey=pge.UnitTypeFkey FROM ProductGroupsEXPTypes pge WHERE pge.EXPTypesFkey=@EXPTMyKey8 AND pge.ProductGroupsFkey=@PGMyKey

    IF (@UnitFkey <>-1)
    BEGIN
    select @EXPGName8=rtrim(ltrim(@EXPGName8))+'('+rtrim(ltri m(ut.Name))+')' FROM UnitTypes ut WHERE ut.MyKey= @UnitFkey
    END;

    END
    --ستون 9
    IF @EXPTMyKey9 IS NOT NULL
    BEGIN

    SET @UnitFkey=-1;
    SELECT @UnitFkey=eiu.UnitFkey FROM ExpInsUnits eiu WHERE eiu.PGFkey=@PGMyKey AND eiu.EGETFkey=(SELECT ee.MyKey FROM EXPGroupsEXPTypes ee WHERE ee.EXPGroupFkey=@EXPGMyKey AND ee.EXPTypeFkey=@EXPTMyKey9)
    IF @UnitFkey =-1
    SELECT @UnitFkey=pge.UnitTypeFkey FROM ProductGroupsEXPTypes pge WHERE pge.EXPTypesFkey=@EXPTMyKey9 AND pge.ProductGroupsFkey=@PGMyKey

    IF (@UnitFkey <>-1)
    BEGIN
    select @EXPGName9=rtrim(ltrim(@EXPGName9))+'('+rtrim(ltri m(ut.Name))+')' FROM UnitTypes ut WHERE ut.MyKey= @UnitFkey
    END;

    END
    --ستون 10
    IF @EXPTMyKey10 IS NOT NULL
    BEGIN

    SET @UnitFkey=-1;
    SELECT @UnitFkey=eiu.UnitFkey FROM ExpInsUnits eiu WHERE eiu.PGFkey=@PGMyKey AND eiu.EGETFkey=(SELECT ee.MyKey FROM EXPGroupsEXPTypes ee WHERE ee.EXPGroupFkey=@EXPGMyKey AND ee.EXPTypeFkey=@EXPTMyKey10)
    IF @UnitFkey =-1
    SELECT @UnitFkey=pge.UnitTypeFkey FROM ProductGroupsEXPTypes pge WHERE pge.EXPTypesFkey=@EXPTMyKey10 AND pge.ProductGroupsFkey=@PGMyKey

    IF (@UnitFkey <>-1)
    BEGIN
    select @EXPGName10=rtrim(ltrim(@EXPGName10))+'('+rtrim(lt rim(ut.Name))+')' FROM UnitTypes ut WHERE ut.MyKey= @UnitFkey
    END;

    END

    --ستون 11
    IF @EXPTMyKey11 IS NOT NULL
    BEGIN

    SET @UnitFkey=-1;
    SELECT @UnitFkey=eiu.UnitFkey FROM ExpInsUnits eiu WHERE eiu.PGFkey=@PGMyKey AND eiu.EGETFkey=(SELECT ee.MyKey FROM EXPGroupsEXPTypes ee WHERE ee.EXPGroupFkey=@EXPGMyKey AND ee.EXPTypeFkey=@EXPTMyKey11)
    IF @UnitFkey =-1
    SELECT @UnitFkey=pge.UnitTypeFkey FROM ProductGroupsEXPTypes pge WHERE pge.EXPTypesFkey=@EXPTMyKey11 AND pge.ProductGroupsFkey=@PGMyKey

    IF (@UnitFkey <>-1)
    BEGIN
    select @EXPGName11=rtrim(ltrim(@EXPGName11))+'('+rtrim(lt rim(ut.Name))+')' FROM UnitTypes ut WHERE ut.MyKey= @UnitFkey
    END;

    END
    --ستون 12
    IF @EXPTMyKey12 IS NOT NULL
    BEGIN

    SET @UnitFkey=-1;
    SELECT @UnitFkey=eiu.UnitFkey FROM ExpInsUnits eiu WHERE eiu.PGFkey=@PGMyKey AND eiu.EGETFkey=(SELECT ee.MyKey FROM EXPGroupsEXPTypes ee WHERE ee.EXPGroupFkey=@EXPGMyKey AND ee.EXPTypeFkey=@EXPTMyKey12)
    IF @UnitFkey =-1
    SELECT @UnitFkey=pge.UnitTypeFkey FROM ProductGroupsEXPTypes pge WHERE pge.EXPTypesFkey=@EXPTMyKey12 AND pge.ProductGroupsFkey=@PGMyKey

    IF (@UnitFkey <>-1)
    BEGIN
    select @EXPGName12=rtrim(ltrim(@EXPGName12))+'('+rtrim(lt rim(ut.Name))+')' FROM UnitTypes ut WHERE ut.MyKey= @UnitFkey
    END;

    END
    --ستون 13
    IF @EXPTMyKey13 IS NOT NULL
    BEGIN

    SET @UnitFkey=-1;
    SELECT @UnitFkey=eiu.UnitFkey FROM ExpInsUnits eiu WHERE eiu.PGFkey=@PGMyKey AND eiu.EGETFkey=(SELECT ee.MyKey FROM EXPGroupsEXPTypes ee WHERE ee.EXPGroupFkey=@EXPGMyKey AND ee.EXPTypeFkey=@EXPTMyKey13)
    IF @UnitFkey =-1
    SELECT @UnitFkey=pge.UnitTypeFkey FROM ProductGroupsEXPTypes pge WHERE pge.EXPTypesFkey=@EXPTMyKey13 AND pge.ProductGroupsFkey=@PGMyKey

    IF (@UnitFkey <>-1)
    BEGIN
    select @EXPGName13=rtrim(ltrim(@EXPGName13))+'('+rtrim(lt rim(ut.Name))+')' FROM UnitTypes ut WHERE ut.MyKey= @UnitFkey
    END;

    END
    SET @EXPDate='تاريخ'
    INSERT INTO ExpRep_Day_Result_Tittle_Tmp
    (
    F1,F2,F3,F4,F5, F6,F7,F8,F9,F10, F11, F12, F13, F14, F15

    )
    VALUES
    (
    @EXPDate,'ساعت',@EXPGName1,@EXPGName2,@EXPGNam e3,@EXPGName4,@EXPGName5,@EXPGName6,@EXPGName7,@EX PGName8,@EXPGName9,@EXPGName10,@EXPGName11,@EXPGNa me12,@EXPGName13
    )

    DECLARE @EXPDate_old nchar(10);
    DECLARE @EXPTime_old nchar(8);
    DECLARE @EXPTMyKey_old INT;


    SET @EXPTime_old='-aaaa';
    SET @EXPDate_old='dfsa'


    If Exists(Select * from TempDB.dbo.sysObjects where [NAME] LIKE '%#Result_EXp22%')
    drop table #Result_EXp22


    CREATE TABLE #Result_EXp22
    ([Row_Num] INT,
    [EXPdate] [nchar](10) ,
    [EXPTime] [nchar](8) ,
    [EXPValue] [nchar](50) ,
    [EXPTMyKey] [nchar](10) ,

    )

    ---(Row_Num,EXPTime,EXPValue,EXPTMyKey) VALUES

    create clustered index Tind on #Result_EXp22 (row_num)


    DECLARE @EXPTMyKey_cr_detail int;

    IF (@InsMyKey IS not NULL)
    BEGIN


    INSERT INTo #Result_EXp22
    SELECT CAST (ROW_NUMBER() OVER (ORDER BY EXPDate,EXPTime) AS INT),[EXPdate] ,
    [EXPTime] ,
    [EXPValue] ,
    [EXPTMyKey]

    FROM TempRep1 WHERE EXPDate>=@EXPDate_Start AND
    EXPDate<=@EXPDate_end and
    pgmykey=@PGMyKey AND EXPGMyKey=@EXPGMyKey AND EXPInsMyKey=@InsMyKey AND EXPValue IS NOT NULL
    ORDER BY EXPDate,EXPTName


    END
    ELSE IF (1=1)
    BEGIN


    INSERT INTo #Result_EXp22
    SELECT CAST (ROW_NUMBER() OVER (ORDER BY EXPDate,EXPTime) AS INT),[EXPdate] ,
    [EXPTime] ,
    [EXPValue] ,
    [EXPTMyKey]

    FROM TempRep1 WHERE EXPDate>=@EXPDate_Start AND
    EXPDate<=@EXPDate_end and
    pgmykey=@PGMyKey AND EXPGMyKey=@EXPGMyKey AND EXPInsMyKey IS NULL AND EXPValue IS NOT NULL
    ORDER BY EXPDate,EXPTime,EXPTName



    END



    SET @Row=1
    SET SET @Row=1
    -- detal



    DECLARE @Col_First BIT;
    SET @Col_First=1

    Declare @i INT
    SET @i=1
    Declare @sum INT
    select @sum=count(row_num) FROM #Result_EXp22


    SET @F1='--' SET @F2='--' SET @F3='--' SET @F4='--' SET @F5='--' SET @F6='--' SET @F7='--' SET @F8='--' SET @F9='--' SET @F10='--' SET @F11='--' SET @F12='--' SET @F13='--' SET @F14='--' SET @F15='--'


    WHILE @i <= (@sum)+1
    BEGIN
    --SELECT @i
    SELECT @EXPDate=EXPDate,@EXPTime=EXPTime,@EXPValue=EXPVal ue,@EXPTMyKey_cr_detail =EXPTMyKey
    FROM #Result_EXp22
    WHERE row_num = @i

    --SELECT @i AS i,@EXPDate_old,@EXPTime_old,@F1 AS f1,@F2 AS f2,@F3 AS f3,@F4 AS f4,@F5,@F6,@F7,@F8,@F9,@F10,@F11,@F12,@F13 ,LEN(@EXPTime_old) AS len

    IF ((ISNULL(LTRIM(@EXPTime_old),0) <>ISNULL (LTRIM(@EXPTime),0) AND (@EXPdate_old =@EXPdate)) OR (@EXPdate_old <>@EXPdate) OR (@i=@sum+1 ))
    BEGIN

    IF (@Col_First=0)
    BEGIN

    INSERT INTO tem_rep
    (
    ROW_NUMBER,F1,F2,F3,F4,F5,F6,F7,F8,F9, F10, F11, F12, F13, F14, F15
    )
    VALUES
    (
    @i,@EXPDate_old,@EXPTime_old,@F1,@F2,@F3,@F4,@F5,@ F6,@F7,@F8,@F9,@F10,@F11,@F12,@F13
    )


    --SELECT @i,1,@EXPDate_old,@EXPTime_old,'old_inserted',@EXP Date,@EXPTime


    SET @F1='--' SET @F2='--' SET @F3='--' SET @F4='--' SET @F5='--' SET @F6='--' SET @F7='--' SET @F8='--' SET @F9='--' SET @F10='--' SET @F11='--' SET @F12='--' SET @F13='--' SET @F14='--' SET @F15='--'
    END
    END
    set @Row=null
    SELECT @Row=ae.F FROM #All_EXPTName ae WHERE ae.InsMyKey=@EXPTMyKey_cr_detail


    IF (@Row=1)

    SET @F1=@EXPValue
    ELSE IF (@Row=2)
    SET @F2=@EXPValue
    ELSE IF (@Row=3)
    SET @F3=@EXPValue
    ELSE IF (@Row=4)
    SET @F4=@EXPValue
    ELSE IF (@Row=5)
    SET @F5=@EXPValue
    ELSE IF (@Row=6)
    SET @F6=@EXPValue
    ELSE IF (@Row=7)
    SET @F7=@EXPValue
    ELSE IF (@Row=8)
    SET @F8=@EXPValue
    ELSE IF (@Row=9)
    SET @F9=@EXPValue
    ELSE IF (@Row=10)
    SET @F10=@EXPValue
    ELSE IF (@Row=11)
    SET @F11=@EXPValue
    ELSE IF (@Row=12)
    SET @F12=@EXPValue
    ELSE IF (@Row=13)
    SET @F13=@EXPValue
    ELSE IF (@Row=14)
    SET @F14=@EXPValue
    ELSE IF (@Row=15)
    SET @F15=@EXPValue




    IF (@Col_First=1)
    SET @Col_First=0

    SET @EXPTime_old =@EXPTime
    SET @EXPdate_old =@EXPdate
    SET @EXPTMyKey_old = @EXPTMyKey_cr_detail

    SET @i=@i+1;
    END


    SELECT @Rows_Inst=COUNT(*) FROM #All_EXPTName


    IF (@Rows_Inst=1)
    SELECT F1,F2,F3 FROM tem_rep
    ELSE IF (@Rows_Inst=2)
    SELECT F1,F2,F3,F4 FROM tem_rep
    IF (@Rows_Inst=3)
    SELECT F1,F2,F3,F4,F5 FROM tem_rep
    ELSE IF (@Rows_Inst=4)
    SELECT F1,F2,F3,F4,F5,F6 FROM tem_rep

    ELSE IF (@Rows_Inst=5)
    SELECT F1,F2,F3,F4,F5,F6,F7 FROM tem_rep
    ELSE IF (@Rows_Inst=6)
    SELECT F1,F2,F3,F4,F5,F6,F7,F8 FROM tem_rep
    ELSE IF (@Rows_Inst=7)
    SELECT F1,F2,F3,F4,F5,F6,F7,F8,F9 FROM tem_rep
    ELSE IF (@Rows_Inst=8)
    SELECT F1,F2,F3,F4,F5,F6,F7,F8,F9,F10 FROM tem_rep
    ELSE IF (@Rows_Inst=9)
    SELECT F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11 FROM tem_rep
    ELSE IF (@Rows_Inst=10)
    SELECT F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11, F12 FROM tem_rep
    ELSE IF (@Rows_Inst=11)
    SELECT F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11, F12, F13 FROM tem_rep
    ELSE IF (@Rows_Inst=12)
    SELECT F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11, F12, F13,F14 FROM tem_rep
    ELSE IF (@Rows_Inst=13)
    SELECT F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11, F12, F13,F14, F15 FROM tem_rep




    --
    --
    -- SELECT CAST (ROW_NUMBER() OVER (ORDER BY EXPDate,EXPTime) AS INT),[EXPdate] ,
    --[EXPTime] ,
    --[EXPValue] ,
    --[EXPTMyKey]
    --
    --FROM TempRep1 WHERE EXPDate>=@EXPDate_Start AND
    --EXPDate<=@EXPDate_end and
    --pgmykey=@PGMyKey AND EXPGMyKey=@EXPGMyKey AND EXPInsMyKey=@InsMyKey
    -- ORDER BY EXPDate,EXPTime,EXPTName
    ----
    -- SELECT * FROM #Result_EXp22 re
    -- SELECT * FROM #All_EXPTName
    -- SELECT * FROM ExpRep_Day_Result_Tittle_Tmp erdrtt
    -- SELECT DISTINCT EXPTMyKey, EXPTName FROM TempRep1 WHERE EXPDate>=@EXPDate_Start AND
    --EXPDate<=@EXPDate_end and
    --pgmykey=@PGMyKey AND EXPGMyKey=@EXPGMyKey AND EXPInsMyKey=@InsMyKey AND EXPValue IS NOT NULL
    --ORDER BY EXPTName
    DROP TABLE #All_EXPTName


    END

  10. #10

    نقل قول: جدول موقت در شبكه

    خلاصش اينه كه يه حلقه گذاشتم كه رديف هاي جدول موقت رو يكي يك پيمايش ميكنه و وقتي ساعت عوض ميشه چند تا رديف و ميكنه يه رديف در چند ستون

  11. #11

    نقل قول: جدول موقت در شبكه

    نقل قول نوشته شده توسط حمیدرضاصادقیان مشاهده تاپیک
    سلام. به این روش ایجاد میشه.

    ولی پیشنهاد من اینه که شما روش کارتون رو عوض کنید چون خود کرسر باعث کاهش سرعت کوئری شما خواهد شد و استفاده از جداول موقت نیز برهمین کاهش ، می افزاید .
    شما اگر نوع کوئری که میخواهید بدست بیارید رو اینجا مطرح کنید شاید کوئری بهتری برای اونکار ارائه بشه.
    موفق باشید
    براي متغير جدولي هم با ايجاد براي هر كاربر، منحصر بفرد ميشه مثل جدول موقت؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •