سؤال

آمل أن تتمكن من المساعدة في العثور على إجابة لمشكلة ستصبح موضوعا متكررا في العمل. يتضمن ذلك تنمية بيانات degormism من جداول RDBMS لتنسيقات الملفات المسطحة مع مجموعات متكررة (مشاركة المجال والمعنى) عبر الأعمدة. لسوء الحظ، هذا أمر لا مفر منه.

إليك مثال مبسط للغاية للتحول الذي سأطلبه:

      جدول أ                               الجدول ب------------------- 1 -> كثير ---------------------------- - a_key field_a b_key a_key field_ba_key_01 a_value_01 b_key_01 a_key_01 b_value_01 a_key_02 a_value_02 b_value_02 b_value_01 b_value_02 b_value_02 b_key_03 a_key_02 b_value_03

سيصبح هذا:

a_key field_a b_key1 field_b1 b_key2 field_b2a_key_01 a_value_01 b_value_01 b_value_01 b_key_02 b_value_02 a_key_02 a_value_02 b_key_03 b_value_03

كل إدخال من TABLE A سيكون لديك صف واحد في ملف الإخراج المسطح مع عمود واحد لكل مجال ذات صلة من TABLE B. وبعد يمكن أن تحتوي الأعمدة في ملف الإخراج على قيم فارغة للحقول التي تم الحصول عليها من TABLE B.

أدرك أن هذا سيخلق للغاية واسع ملف، ولكن هذا هو شرط. لقد ألقيت نظرة على MapForce ومقعتة، لكنني أعتقد أن هذه المشكلة غريبة جدا أو لا أستطيع استخدامها بشكل صحيح.

سؤالي: هل هناك بالفعل أداة من شأنها أن تنجز هذا أو يجب أن أقوم بتطوير واحد من نقطة الصفر (لا أريد إعادة اختراع العجلة)؟

هل كانت مفيدة؟

المحلول 3

شكرا لجميع التعليمات الخاصة بك. كما اتضح العلاقة واحد -> ماكس من 3 ولن يتغير هذا القيد مع وجود البيانات ثابتة الآن حتى يعمل SQL Run-the-the-mill التالية:

حدد a.a_key، a.field_a، b.b_key، b.field_b، b2.b_key، b2.field_b_key، b3.field_b من join only b on (a.a_key = b.a_key) اليسار B2 ON (A.A_KEY = B2.A_KEY و B2.B_KEY! = B.B_KEY) الأيسر JOIN B B3 ON (A.A_KEY = B3.A_KEY و B3.B_KEY! = B.B_KEY و B3.B_KEY! = B2. B_KEY) GROUP by A.A_KEY طلب من قبل A.A_KEY

نصائح أخرى

أنا متأكد من أنك لا تستطيع حل هذا في SQL عادي، ولكن اعتمادا على RDBMS الخاص بك، فقد يكون من الممكن إنشاء إجراء مخزن أو بعض الشيء. وإلا فإن الأمر سهل إلى حد ما القيام به في لغة البرمجة النصية. ما هي التكنولوجيا التي تستخدمها؟

هل هذه المساعدة؟

باستخدام-Pivot-in-SQL-Server-2008

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top