大家都知道,Sharepoint任务列表有一个“Assigned To”列。当我在Access中导入任务列表时,我得到一个列表和另一个表“UserInfo”,其中包含该列表的用户(这些用户是Sharepoint中该列表的权限下列出的相同用户)。此UserInfo表包含用户ID,标题,帐户,电子邮件,部门等数据。
当我运行以下查询时:
SELECT *
FROM FirstList
UNION ALL
SELECT *
FROM SecondList;
“已分配给”字段将更改为UserInfo中人员的ID。它们的名称位于UserInfo表的“标题”字段下。
我应该如何修改SQL查询以将标题放在“已分配给”列中?
编辑:这是一个例子
在FirstList中,我有一行具有以下值:“Do this”“John Doe”“Not Started”对应于“Title”,“Assigned To”和“Status”列。在UserInfo中,我有一行“30”“John Doe”“f2rdf”作为“ID”,“标题”和“帐户”的值。
在我做联盟之后,我会看到值30,而不是John Doe。那么如何指定我想要查看标题的值,而不是ID的值?像[Assigned To] .Title? (遗憾的是不起作用)
答案 0 :(得分:0)
Union查询结合了两个类似的数据集。 Union
的要求是两个集合中的列数相同,并且第一个集合的每个列的数据类型与第二个数据集中匹配列的数据类型匹配。
根据您对问题的描述,听起来您正在比较两个具有相同列数的数据集,这些数据集具有所有相同的数据类型,但第二个数据集中的元数据与无序(或不匹配)的数据集不同你的第一个数据集。
如果您希望FirstList
中的列与SecondList
中的列匹配,则需要明确指定顺序,而不是依赖SELECT *
语法。换句话说,如果FirstList
的列为ColA, ColB, ColC
且SecondList
中的列为ColB, ColC, ColA
,那么您可能希望将查询更改为:
SELECT ColA, ColB, ColC
FROM FirstList
UNION ALL
SELECT ColA, ColB, ColC
FROM SecondList;
否则(假设数据类型完全相同),您的ColB
列,ColA
中的ColC
数据,等等ColB
数据可能会等等....