簡體   English   中英

能否在SQL查詢中使用相同的列兩次使用不同的過濾器?

[英]Can I use same column twice with different filters in sql query?

我正在為客戶創建報告。 在其中,我需要合並來自4個表的信息。 直到最后一張表(我只使用一列),一切都很好。 此列包含電話和電子郵件(全部合而為一)。 我需要在單獨的列中顯示電子郵件地址和電話號碼,但它們來自同一列。

我可以同時顯示它們,但是它們顯示在單獨的行中。 我也可以復制該列,然后在excel中對其進行排序,但是客戶需要能夠自己完成此操作,而無需在以后進行編輯。

    SELECT CustomerProcessO.GID,
           CustomerProcessO.FOIF,
           Customers.FirstName,
           Customers.LastName,
           SalesPersons.FirstName,
           SalesPersons.LastName,
           DynamicListData.DataContent AS Email,
           DynamicListData.DataContent AS Phone
      FROM CustomerProcessO
LEFT OUTER JOIN Customers ON CustomerProcessO.id = Customers.id
LEFT OUTER JOIN SalesPersons ON CustomerProcessO.GIDSalesPerson = SalesPersons.GID
LEFT OUTER JOIN DynamicListData ON ParentId = Customers.id
     WHERE DynamicListData.KeyField = 'EMAILS'
        OR DynamicListData.KeyField = 'PHONES'

我得到的結果是正確的,但我在兩行中分別得到了電話號碼和電子郵件。 我需要一欄包含電子郵件,一欄包含電話號碼

您可以兩次連接同一張表:

SELECT dld1.DataContent AS Email, dld2.DataContent AS Phone
...
LEFT JOIN DynamicListData dld1 ON dld1.ParentId = Customers.id AND dld1.KeyField = 'EMAILS'
LEFT JOIN DynamicListData dld2 ON dld2.ParentId = Customers.id AND dld2.KeyField = 'PHONES'
SELECT        CustomerProcessO.GID, CustomerProcessO.FOIF, Customers.FirstName, Customers.LastName, SalesPersons.FirstName, SalesPersons.LastName, 
DLD1.Phone, DLD2.Email
FROM            CustomerProcessO 
LEFT OUTER JOIN Customers ON CustomerProcessO.id = Customers.id 
LEFT OUTER JOIN SalesPersons ON CustomerProcessO.GIDSalesPerson = SalesPersons.GID 
LEFT OUTER JOIN (SELECT ParentId, KeyField, DataContent AS [Phone] FROM DynamicListDate) DLD1 ON DLD1.ParentId = Customers.id AND DLD1.KeyField = 'PHONES'
LEFT OUTER JOIN (SELECT ParentId, KeyField, DataContent AS [Email] FROM DynamicListDate) DLD2 ON DLD2.ParentId = Customers.id AND DLD2.KeyField = 'EMAILS'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM