SQL: تعبئة صف واحد (TBL 1) من صفوف متعددة (TBL 2)؛ عبر DB

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

  •  05-07-2019
  •  | 
  •  

سؤال

ولقد خلق جدول واحد في بلدي DB الأساسي دعا tblGlobalIDMapping من شأنها أن تعيين GUID لجميع القيود وتخزين أخرى 3 معرف الأولية في جميع أنحاء التطبيق لتوفير مستودع ID واحد.

والجدول الجديد هو في البنية التالية ->

AppGlobalID     uniqueidentifier     NoNulls
PersonID        int                  NoNulls
DRIMaster       int                  Nulls
DRIClient       int                  Nulls

والمعلومات أحتاج هي في جدول في DB مختلفة (نفس الخادم) مع هيكل جزئي التالية ->

PersonID                int             NoNulls
ApplicationID           tinyint         NoNulls
PersonApplicationID     varchar(14)     NoNulls

ويتم تمثيل شخص (ID # 13579) في الجدول الثاني 1 لكل تطبيق. العمود ApplicationID بتخزين رقم (1)، لDRIMaster و 6 DRIClient، أن يقول لك ما # ID في PersonApplicationID ل.

ولست بحاجة للقيام نسخة السائبة / إدراج من هذا الجدول إلى بلدي الجدول الجديد ولكن أريد فقط 1 الصف تسجيل 3 معرف الرئيسية في الجدول الجديد.

وهذا ما لدي حتى الآن ولكن هذا يعود على التوالي لكل PersonID.

SELECT PersonID, 
    CASE
        WHEN ApplicationID = 1
        THEN PersonApplicationID
    END AS 'DRIMaster', 
    CASE
        WHEN ApplicationID = 6
        THEN PersonApplicationID
    END AS 'DRIClient'
FROM tblApplicationAssociation
WHERE ApplicationID IN (1,6)

وهذا ما يعيد أدناه ->

PersonID  DRIMaster   DRIClient
_______________________________
108574    71163       NULL
108574    NULL        71163
هل كانت مفيدة؟

المحلول

والمجاميع تتجاهل بلا قيم، لذلك ....

SELECT PersonID, 
       Min(CASE
                WHEN ApplicationID = 1
                THEN PersonApplicationID
        END) AS 'DRIMaster', 
       Min(CASE
                WHEN ApplicationID = 6
                THEN PersonApplicationID
        END) AS 'DRIClient'
FROM tblApplicationAssociation
WHERE ApplicationID IN (1,6)
Group By PersonId
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top