在sql查询中,同一列可以使用两次不同的筛选器吗?
我正在为客户创建报告。在其中,我需要组合来自4个表的信息。直到最后一个表,我只使用一列,一切都很好。本专栏包含电话和电子邮件(一应俱全)。我需要在单独的列中显示电子邮件地址和电话号码,但它们来自同一列 我可以同时显示两者,但它们显示在单独的行中。我也可以复制该列,然后在excel中对其进行排序,但客户需要能够自己进行排序,而无需在之后进行编辑在sql查询中,同一列可以使用两次不同的筛选器吗?,sql,Sql,我正在为客户创建报告。在其中,我需要组合来自4个表的信息。直到最后一个表,我只使用一列,一切都很好。本专栏包含电话和电子邮件(一应俱全)。我需要在单独的列中显示电子邮件地址和电话号码,但它们来自同一列 我可以同时显示两者,但它们显示在单独的行中。我也可以复制该列,然后在excel中对其进行排序,但客户需要能够自己进行排序,而无需在之后进行编辑 SELECT CustomerProcessO.GID, CustomerProcessO.FOIF,
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 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'
你应该提出更有意义的表别名。你应该提出更有意义的表别名。不幸的是,我还没有创建代码。谢谢你的帮助,效果很好!不幸的是,我还没有创建代码。谢谢你的帮助,效果很好!