我有两个表要合并。
第一个表具有一个关键记录列ITEMID
,其中关键记录具有后缀ITEMID_CV
,并且该表包含我想要的另一列数据。第二个表具有相同的键记录,但后缀ITEMID_PH
和其余的数据列不同。
对于第一个表,我可以使用:
SELECT
REPLACE (ITEMID,'CV','PH') AS ITEMID,
CAST (ENDDATE AS DATETIME) AS ENDDATE
FROM PLTReports
这给了我ITEMID
的名字,它与第二张表相同。所以我在那儿。现在我不知道该怎么做,就是将这个结果连接到其他表的其余部分。以下给我一个模棱两可的列名错误。错误是:
错误--------------------
无法链接到外部表:意外的服务器错误:'Deferred 准备工作无法完成。无法准备声明。 列名称“ ITEMID”不明确。使用事件查看器查看PI AF 服务器日志文件以获取更多信息。
我想我可能已经解决了这个问题,但实际上并没有找到执行该操作的示例,并且我可能使用了错误的语法。
SELECT
REPLACE (ITEMID,'CV','PH') AS ITEMID,
CAST (ENDDATE AS DATETIME) AS ENDDATE
FROM PLTReports
INNER JOIN PRODUCTION_ALL ON PRODUCTION_ALL.ITEMID = PLTReports.ITEMID
有人对如何做到这一点有策略吗?这可能很简单,但我还没到那儿。
编辑:这是用于在PI AF中创建链接表,我无法立即回忆它使用哪种SQL。
答案 0 :(得分:1)
您几乎拥有解决方案:
SELECT
REPLACE (ITEMID,'CV','PH') AS ITEMID,
CAST (ENDDATE AS DATETIME) AS ENDDATE
FROM PLTReports
INNER JOIN PRODUCTION_ALL
ON PRODUCTION_ALL.ITEMID = REPLACE(PLTReports.ITEMID,'CV','PH')
答案 1 :(得分:1)
如果我对您的理解正确,则需要在连接条件中使用 searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String query) {
ImageView searchViewIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
searchViewIcon.setVisibility(View.GONE);
return true;
}
});
。另外,具有相同名称的字段必须加上前缀:
REPLACE
答案 2 :(得分:0)
由于两个表都有一个“ ITEMID”,因此您需要指定REPLACE()应该使用的表:
REPLACE (PLTReports.ITEMID,'CV','PH') AS ITEMID,
但是我想根据您的意思,您还必须调整PRODUCTION_ALL.ITEMID = PLTReports.ITEMID
,因为正如您所说的
第二个表具有相同的键记录,但后缀不同
因此,您也需要替换联接条件:
PRODUCTION_ALL.ITEMID = REPLACE(PLTReports.ITEMID,'CV','PH')
令人遗憾的是,这效率很低,因为必须生成来自REPLACE的临时未索引结果集;这就是为什么不幸的是您的索引不匹配。
答案 3 :(得分:-1)
没有太多的输入,我想这就是你的
SELECT
x.ITEMID
, x.ENDDATE
FROM
(
SELECT
REPLACE (ITEMID,'CV','PH') AS ITEMID,
CAST (ENDDATE AS DATETIME) AS ENDDATE
FROM PLTReports
) x
INNER JOIN PRODUCTION_ALL ON PRODUCTION_ALL.ITEMID = x.ITEMID
您也可以用这种方法来做,这可能会无限改善
; with cte AS
(
SELECT
REPLACE (ITEMID,'CV','PH') AS ITEMID,
CAST (ENDDATE AS DATETIME) AS ENDDATE
FROM PLTReports
)
SELECT
cte.ITEMID
, ENNDATE
, PRODUCTION_ALL.*
FROM cte
INNER JOIN PRODUCTION_ALL ON cte.ITEMID = PRODUCTION_ALL.ITEMID