[英]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.