sql >> データベース >  >> RDS >> Sqlserver

複数の列を 1 つの列にまとめる SQL

    私たちは実際にあなたのデータを知らないので、これは暗闇の中のショットですが、既存のクエリが気に入った場合は、次のように where 句を使用して単純に 2 回使用できる場合があります。

    SELECT
    -- Common stuff?
    ISNULL(Sales.ActivityId, Other.ActivityId), ISNULL(Sales.ScheduledStart, Other.ScheduledStart), ISNULL(Sales.OwnerIdName, Other.OwnerIdName), ISNULL(Sales.AccountIdName, Other.AccountIdName), ISNULL(Sales.new_ContactPersonName, Other.new_ContactPersonName), ISNULL(Sales.[Subject], Other.[Subject]), ISNULL(Sales.new_ColderNotes, Other.new_ColderNotes)
    -- Sales stuff?
    , Sales.AccountId, Sales.ContactId, Sales.SystemUserId, Sales.OptionalOwner, Sales.OptionalContact, Sales.OptionalAccount, Sales.PartyId, Sales.ParticipationTypeMask, Sales.RequiredContact, Sales.RequiredAccount, Sales.RequiredOwner, Sales.new_BusinessUnit
    -- Other Stuff?
    , Other.AccountId, Other.ContactId, Other.SystemUserId, Other.OptionalOwner, Other.OptionalContact, Other.OptionalAccount, Other.PartyId, Other.ParticipationTypeMask, Other.RequiredContact, Other.RequiredAccount, Other.RequiredOwner, Other.new_BusinessUnit
    FROM
    (
        SELECT DISTINCT 
            Appointment.ActivityId, Appointment.ScheduledStart, Appointment.OwnerIdName, Contact.AccountIdName, Appointment.new_ContactPersonName, 
                Appointment.Subject, Appointment.new_ColderNotes, Account.AccountId, Contact_1.ContactId, SystemUser.SystemUserId, SystemUser.FullName AS OptionalOwner, 
                Contact_1.FullName AS OptionalContact, Account.Name AS OptionalAccount, ActivityParty.PartyId, ActivityParty.ParticipationTypeMask, 
                Contact_1.FullName AS RequiredContact, Account.Name AS RequiredAccount, SystemUser.FullName AS RequiredOwner, Account.new_BusinessUnit
        FROM
            Contact AS Contact_1 RIGHT OUTER JOIN
                Account RIGHT OUTER JOIN
                SystemUser RIGHT OUTER JOIN
                Appointment INNER JOIN
                ActivityParty ON Appointment.ActivityId = ActivityParty.ActivityId ON SystemUser.SystemUserId = ActivityParty.PartyId ON Account.AccountId = ActivityParty.PartyId ON
                Contact_1.ContactId = ActivityParty.PartyId LEFT OUTER JOIN
                Contact ON Appointment.new_ContactPerson = Contact.ContactId
        -- Limit this part to Sales?
        WHERE ParticipationTypeMask BETWEEN 1 AND 3
    ) as Sales
    FULL OUTER JOIN
    (
        SELECT DISTINCT 
            Appointment.ActivityId, Appointment.ScheduledStart, Appointment.OwnerIdName, Contact.AccountIdName, Appointment.new_ContactPersonName, 
                Appointment.Subject, Appointment.new_ColderNotes, Account.AccountId, Contact_1.ContactId, SystemUser.SystemUserId, SystemUser.FullName AS OptionalOwner, 
                Contact_1.FullName AS OptionalContact, Account.Name AS OptionalAccount, ActivityParty.PartyId, ActivityParty.ParticipationTypeMask, 
                Contact_1.FullName AS RequiredContact, Account.Name AS RequiredAccount, SystemUser.FullName AS RequiredOwner, Account.new_BusinessUnit
        FROM
            Contact AS Contact_1 RIGHT OUTER JOIN
                Account RIGHT OUTER JOIN
                SystemUser RIGHT OUTER JOIN
                Appointment INNER JOIN
                ActivityParty ON Appointment.ActivityId = ActivityParty.ActivityId ON SystemUser.SystemUserId = ActivityParty.PartyId ON Account.AccountId = ActivityParty.PartyId ON
                Contact_1.ContactId = ActivityParty.PartyId LEFT OUTER JOIN
                Contact ON Appointment.new_ContactPerson = Contact.ContactId
        -- Limit this part to Other?
        WHERE ParticipationTypeMask BETWEEN 4 AND 6
    ) AS Other ON Sales.ActivityId = Other.ActivityId -- More cols for join?
      

    1. webLogic サーバーのネイティブ JSF 実装を無効にし、myfaces 実装を使用する

    2. 株式データベースのパフォーマンスに関するcharとvarchar

    3. LEFT OUTER JOINを使用して、関連する行が存在しないことを確認するための最良の方法は何ですか

    4. ジャロウィンクラー関数:同じスコアが非常に類似した非常に異なる単語に一致するのはなぜですか?