سؤال SQL .. كيف يمكنني إضافة أعمدة دينامة إلى مجموعة نتيجة استعلام SQL؟

StackOverflow https://stackoverflow.com/questions/763454

  •  11-09-2019
  •  | 
  •  

سؤال

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

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

هل هذا منطقي؟ كيف أذهب حول كتابة الاستعلام؟

شكرا على اي مساعدة.

تحرير: التوضيح ..

كجزء من هذا الاستعلام، أحتاج إلى تشغيل استعلام فرعي يؤدي إلى إرجاع الأعلام التي تم إنشاؤها بواسطة المستخدم (لا أعرف هذه في وقت التصميم)، ثم دمج شيك لكل قيمة علامة في الاستعلام الرئيسي لإرجاع التفاصيل حول الملفات.

مخطط مبسط على النحو التالي:

  • ملف {ID، اسم}
  • علم {ID، اسم}
  • fileflags {fileid، flagid} - صف في هذا الجدول يشير إلى أنه تم تعيين العلم للملف

أحتاج إلى الاستعلام لإرجاع مجموعة النتائج مع أعمدة شيء مثل هذا:

filed. اسم الملف Flag1nish Flag2Name. .... Flagnname.

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

المحلول

هل يمكن أن تبدأ من خلال النظر إلى محور الوظيفة المتاحة في SQL Server 2005+. مع ذلك وبعض سلسلة سلسلة يجب أن تكون قادرا على تجميع استفسار لأي عدد من الأعمدة

بناء على تعليقك، ستبدو SELECT شيء مثل هذا:

        SELECT <non-pivoted column>,

            [first pivoted column] AS <column name>,

            [second pivoted column] AS <column name>, ...
    From Table 
    PIVOT (
...
FOR 
...
)

نصائح أخرى

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

يمكنك بعد ذلك استخدام EXECUTE لإرجاع الاستعلام الديناميكي المحدد للمستخدم. يرى http://msdn.microsoft.com/en-us/library/ms188332.aspx.

يبدو أنك بحاجة إلى استعلام كروستاب، حيث تريد تحويل صفوف إلى أعمدة. هي الأعلام المخزنة في طاولة منفصلة كواحد إلى العديد من العلاقات مع الجدول الأصل؟

أعتقد أنك تريد هي الاسم المستعار. هنا مثال من http://www.sql-tutorial.net/sql-aliases.asp.

SELECT Employee, SUM(Hours) AS SumHoursPerEmployee
FROM EmployeeHours
GROUP BY Employee 

حقا أود أن أرى مخططك للمساعدة في أية حال.

يحررربما تحتاج متداخلة SELECTس.http://sqlzoo.net/1a.htm.

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