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

نام تاپیک: جابجائی رکوردها و فیلدها همانند تصویر ضمیمه

  1. #1

    جابجائی رکوردها و فیلدها همانند تصویر ضمیمه

    سلام
    میخواهم مقادیر جدول1 رو همانند تصویر ضمیمه در یک کوئری قرار بدهم . آیا چنین امکانی وجود دارد ؟
    بنظرم رسیدکه شاید با کوئری کراس تب انجام بشه ولی موفق نشدم
    ممنون
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: png pic.png‏ (2.4 کیلوبایت, 64 دیدار)
    فایل های ضمیمه فایل های ضمیمه




  2. #2
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    پست
    2,520

    نقل قول: جابجائی رکوردها و فیلدها همانند تصویر ضمیمه

    سلام و روز خوش

    پرسش خوبی مطرح کردین،
    اینکه باید از crosstab query استفاده کنین هم درسته ولی قبلش باید دیتا رو تغییرشکل بدین و مستقیما از روی دیتا اصلی نمیشه.
    من با دیتا نمونه دیگه ای روش کار رو یادتون میدم.

  3. #3
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    پست
    2,520

    Swap Rows and Columns Using TRANSFORM In CrossTab Query

    فرض کنین که دیتا ما جدول نمرات زیر باشه:
    1.png

  4. #4
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    پست
    2,520

    Swap Rows and Columns Using TRANSFORM In CrossTab Query

    اول یک کوئری میسازیم که دیتا رو برای کوئری کراس تب آماده کنه:
    SELECT Student , "Algebra" AS Course , Algebra AS Score FROM Grades
    UNION
    SELECT Student , "Arts" AS Course , Arts AS Score FROM Grades
    UNION
    SELECT Student , "Math" AS Course , Math AS Score FROM Grades
    UNION
    SELECT Student , "Physics" AS Course , Physics AS Score FROM Grades
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: png 2.png‏ (28.5 کیلوبایت, 51 دیدار)

  5. #5
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    پست
    2,520

    Swap Rows and Columns Using TRANSFORM In CrossTab Query

    حالا روی این کوئری Grades_Normalized کوئری کراس تب رو میسازیم:


    4.png
    TRANSFORM First(Grades_Normalized.Score) AS FirstOfScore
    SELECT Grades_Normalized.Course
    FROM Grades_Normalized
    GROUP BY Grades_Normalized.Course
    PIVOT Grades_Normalized.Student

  6. #6
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    پست
    2,520

    Swap Rows and Columns Using TRANSFORM In CrossTab Query

    و نتیجه کار:

    3.png

  7. #7
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    پست
    2,520

    نقل قول: جابجائی رکوردها و فیلدها همانند تصویر ضمیمه

    در MSSQL کار به این راحتی نیست چون در اکسس TRANSFORM رو داریم که اونجا نیست.
    فرصت کنم نمونه MSSQL رو هم برای مقایسه میگذارم.

  8. #8
    مدیر بخش آواتار amirzazadeh
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تبريز
    پست
    1,916

    نقل قول: Swap Rows and Columns Using TRANSFORM In CrossTab Query

    با سلام و احترام

    DON'T START;OTHERWISE DON'T STOP
    .................................................
    قوانين سايت

  9. #9

    نقل قول: جابجائی رکوردها و فیلدها همانند تصویر ضمیمه

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    در MSSQL کار به این راحتی نیست چون در اکسس TRANSFORM رو داریم که اونجا نیست.
    فرصت کنم نمونه MSSQL رو هم برای مقایسه میگذارم.
    ممنون از لطفتون استاد!

  10. #10
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    پست
    2,520

    Swap Rows and Columns Using TRANSFORM In Access CrossTab Query

    برای مقایسه و تکمیل بحث، روش کار در MSSQL رو هم میذارم.

    قبلش توضیح این مطلب ضروری هست که:
    اینجا ابتدا یک کوئری جدید برای تغییر شکل دیتا درست کردیم (Grades_Normalized) و روی اون PIVOT گرفتیم، چون نتیجه ای که میخواستیم مستقیما از دیتا اولیه بدست نمیومد.
    این ساخت کوئری جدید فقط برای تقسیم کار به گام های کوچکتر و فهم بهتر مراحل کار هست، وگرنه همون اول هم میتونستیم این کوئری رو در همون دل کوئری PIVOT هم بگذاریم:

    TRANSFORM First(Score) AS FirstOfScore
    SELECT Course
    FROM (
    SELECT Student , "Algebra" AS Course , Algebra AS Score FROM Grades
    UNION
    SELECT Student , "Arts" AS Course , Arts AS Score FROM Grades
    UNION
    SELECT Student , "Math" AS Course , Math AS Score FROM Grades
    UNION
    SELECT Student , "Physics" AS Course , Physics AS Score FROM Grades) AS Grades_Normalized
    GROUP BY Course
    PIVOT Student



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

  11. #11
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    پست
    2,520

    Swap Rows and Columns In MSSQL

    حالا کد TSQL همین مسئله در MSSQL اگر بخوایم بنویسیم اینجوری هست:
    SELECT * FROM (
    SELECT [Student] , 'Algebra' AS Course , [Algebra] AS Score FROM Grades
    UNION
    SELECT [Student] , 'Arts' AS Course , Arts AS Score FROM Grades
    UNION
    SELECT [Student] , 'Math' AS Course , Math AS Score FROM Grades
    UNION
    SELECT [Student] , 'Physics' AS Course , Physics AS Score FROM Grades) AS INPUT
    PIVOT (MIN([Score]) FOR [Student] IN ([Marilie],[Leatha],[Gilbert],[Harvey],[Heaney])) AS OUTPUT


    5.png

  12. #12
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    پست
    2,520

    Swap Rows and Columns In MSSQL

    از مقایسه این دو کد چند مورد مشخص میشه:

    1- دستور TRANSFORM رو نداریم!
    به همین خاطر مجبوریم تمام STUDENTها رو در بخش PIVOT بیاریم.
    این خیلی کار رو پیچیده میکنه بخصوص اگر تعداد و اسامی STUDENTها تغییر کنه - که معمولا همیشه همین وضعیت هست.

    2- شکل PIVOT بکلی متفاوت هست.

  13. #13
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    پست
    2,520

    نقل قول: Swap Rows and Columns In MSSQL

    برای ساخت خودکار سری اسامی از تکنیکی بنام DYNAMIC SQL استفاده میکنیم،
    به این صورت که کد TSQL رو بصورت یک STRING میسازیم و این استرینگ رو بعنوان Command-String با دستور Execute اجرا میکنیم.

    قبل از اون باید مجموعه اسامی STUDENT ها رو بعنوان یک لیست جدا شده با کاما که هر کدوم درون [] قرار دارن بسازیم:
    DECLARE @X NVARCHAR(MAX)
    SELECT @X= STRING_AGG (QUOTENAME([STUDENT]) , ',') FROM Grades
    SELECT @X AS ALL_STUDENTS


    6.png

  14. #14
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    پست
    2,520

    نقل قول: Swap Rows and Columns In MSSQL

    مابقی کار راحت هست:

    DECLARE @X NVARCHAR(MAX)
    SELECT @X= STRING_AGG (QUOTENAME([STUDENT]) , ',') FROM Grades

    DECLARE @QRY NVARCHAR(MAX)= N'
    SELECT * FROM (
    SELECT [Student] , ''Algebra'' AS Course , [Algebra] AS Score FROM Grades
    UNION
    SELECT [Student] , ''Arts'' AS Course , Arts AS Score FROM Grades
    UNION
    SELECT [Student] , ''Math'' AS Course , Math AS Score FROM Grades
    UNION
    SELECT [Student] , ''Physics'' AS Course , Physics AS Score FROM Grades) AS INPUT
    PIVOT (MIN([Score]) FOR [Student] IN (' + @X + ')) AS OUTPUT'

    EXECUTE (@QRY)

  15. #15
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    پست
    2,520

    نقل قول: Swap Rows and Columns In MSSQL

    نتیجه کار در محیط MSSMS :

    7.png

  16. #16
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    پست
    2,520

    نقل قول: Swap Rows and Columns In MSSQL

    یک تاپیک دیگه هست که در اونجا هم پس از تکمیل بحث اکسس، روش کار در MSSQL هم آمده و از تابع RANK برای رتبه بندی استفاده شده :
    رتبه بندی عملکرد در گزارش (barnamenevis.org)

  17. #17
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    پست
    2,520

    نقل قول: Swap Rows and Columns Using TRANSFORM In CrossTab Query

    نقل قول نوشته شده توسط amirzazadeh مشاهده تاپیک
    با سلام و احترام
    با سلام و احترام متقابل
    شما همیشه لطف داشتین جناب میرزازاده

  18. #18
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    پست
    2,520

    نقل قول: جابجائی رکوردها و فیلدها همانند تصویر ضمیمه

    نقل قول نوشته شده توسط atf1379 مشاهده تاپیک
    ممنون از لطفتون !
    ممنون از توجه و پیگیری شما،
    به وعده وفا شد.

  19. #19

    نقل قول: جابجائی رکوردها و فیلدها همانند تصویر ضمیمه

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    ممنون از توجه و پیگیری شما،
    به وعده وفا شد.
    بسیار سپاسگزارم جناب استاد mazoolagh عزیز !

تاپیک های مشابه

  1. ادامه فصل دوم آموزش توابع پردازش تصویر در Matlab-تبدیل نوع تصویر
    نوشته شده توسط بهسان اندیش در بخش پردازش تصویر (Image Processing)
    پاسخ: 3
    آخرین پست: سه شنبه 12 تیر 1397, 00:13 صبح
  2. پاسخ: 2
    آخرین پست: پنج شنبه 06 اسفند 1394, 06:20 صبح
  3. پاسخ: 2
    آخرین پست: چهارشنبه 02 اردیبهشت 1394, 15:08 عصر
  4. پاسخ: 0
    آخرین پست: جمعه 22 دی 1391, 12:04 عصر
  5. پاسخ: 1
    آخرین پست: چهارشنبه 16 آبان 1386, 10:11 صبح

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

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