SQL Server أفضل طريقة لإنشاء عرض ملخص من طرق عرض متعددة

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

سؤال

بالنظر إلى أن لدي العرض التالي حيث ن = 1..100

detail_view_N

Pant  Quantity Fieldx ...
A     20          
A     13
B     4

حاليًا لدينا طرق عرض موجزة تدخل على جدول مثل

summary_view_N

Report_Name     Plant  Count
summary_view_1  A      2
summary_view_1  B      1

ثم يتم استخدام الجدول لإنشاء ملخص شامل مثل

summary_view_all_plants

Report_Name     Plant   Count
summary_view_1  A       2
summary_view_1  B       1
...
summary_view_N  X       Y

هل هناك طريقة لإنشاء summary_view_all_plants دون الحاجة إلى إنشاء كل فرد summary_view_n؟ أرغب في أن أكون قادرًا على الإثارة على الرغم من قائمة التقارير وإنشاء طرق عرض الإدراج ديناميكيًا.

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

المحلول 3

وجدت حل جيد لهذا. لدي جدول يحمل أسماء المشاهدات التي أريد تلخيصها (التفاصيل _view_names). أعتقد أن كل تقرير تقرير وإنشاء استعلام يؤدي ملخص كل تقرير.

DECLARE @REPORT_ID nvarchar(50),
    @sqlCommand varchar(1000)

DECLARE REPORT_cursor CURSOR
    FOR SELECT Report_Name
    FROM detail_view_Names

OPEN REPORT_cursor
FETCH NEXT FROM REPORT_cursor INTO @REPORT_ID

WHILE @@FETCH_STATUS = 0
BEGIN

    SET @sqlCommand = 'SELECT ''' + @Report_ID + ''' AS ReportName, Plant, COUNT(*) AS [Count] FROM dbo.' + @Report_ID + ' GROUP BY Plant'
    EXEC (@sqlCommand)

    FETCH NEXT FROM REPORT_cursor INTO @REPORT_ID

END
CLOSE REPORT_cursor
DEALLOCATE REPORT_cursor

لإضافة تقرير جدي

نصائح أخرى

هل هناك طريقة لإنشاء summary_view_all_plants دون الحاجة إلى إنشاء كل ملخص فردي_فيو_n؟

لا - عليك تحديد جميع الجداول و/أو المشاهدات التي تستخدمها طريقة العرض.

وضع وجهات النظر ليس ممارسة مثالية. يمكن أن يتغير وجهة نظر التأسيس ، وكسر الأطفال ذوي الصلة. تستفسر الاستعلامات نفسها لا يتم تحسينها للأداء.

يعني إدراج القيم في جدول مؤقت أن يتعين عليك إزالة السجلات الحالية أو استخدام المنطق لإضافة أو تحديث وفقًا لذلك. وهذا يعني أيضًا أنه يجب تنفيذ هذا بشكل دوري للحفاظ على متزامن. قد تكون طريقة العرض المفهرسة ، المعروفة أيضًا باسم العرض الملقب ، حلاً محتملًا.

لست متأكدًا مما تقصده إدراج عرض.

ربما يكون الاستعلام مثل هذا هو ما تبحث عنه؟

select Plant, count(*) as Count
from MyTable
group by Plant
order by Plant

أفترض أن جميع وجهات النظر الموجزة تصل إلى نفس الجدول ، MyTable. إذا لم يكن هذا هو الحال ، فمن المحتمل أن تحتاج إلى إجراء مخزن مع بعض SQL الديناميكي لإنشاء ما تبحث عنه ...

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