访问加入后创建的新 table
Accessing a new table created after a join
我使用以下方法将 3 table 中的 select 列加入到新的 table 中:
SELECT A.ExternalID, A.UserDefinedXml.value('(Skin_Sheet/@Label)[1]', 'varchar(3)') AS SS, A.ServiceSiteUid, A.LastModifiedDate, A.PersonUid,
B.FirstName, B.LastName, B.PersonUid,
C.Name
FROM Patient A
INNER JOIN Person B ON B.PersonUid = A.PersonUid
INNER JOIN ListServiceSite C ON C.ServiceSiteUid = A.ServiceSiteUid
WHERE SS IS NOT NULL
ORDER By LastModifiedDate;
这一切都有效,但我不确定如何引用从 XML 中提取的数据创建的列 SS
,所以我只能 select 值所在的观察值是 "Yes" 或 "No"。在 R 中我会创建一个新对象,但如果我不指定 table 名称是什么,我不确定 SQL 如何存储这个新的 table。
旁注,我确实尝试将其插入到新的 table 中,但 SQL 不允许我这样做,因为由于某种原因,连接导致 PersonUid
被复制.
提前谢谢你,我对 SQL 非常非常陌生,正在努力学习。
这会将您的结果放入临时文件 table,并避免出现两列同名的问题:
SELECT
A.ExternalID
,SS = A.UserDefinedXml.value('(Skin_Sheet/@Label)[1]', 'varchar(3)')
,A.ServiceSiteUid
,A.LastModifiedDate
,PersonUid_A = A.PersonUid
,B.FirstName
,B.LastName
,PersonUid_B = B.PersonUid
,C.Name
INTO #TempResults
FROM Patient A
INNER JOIN Person B ON B.PersonUid = A.PersonUid
INNER JOIN ListServiceSite C ON C.ServiceSiteUid = A.ServiceSiteUid
WHERE SS IS NOT NULL
ORDER BY LastModifiedDate;
概念上 WHERE 出现在 SELECT 之前,因此您需要将查询推送到派生的 table 子查询或通用 Table 表达式 (CTE) 以引用 SS
一个 WHERE 子句。 EG
with q as
(
SELECT A.ExternalID, A.UserDefinedXml.value('(Skin_Sheet/@Label)[1]', 'varchar(3)') AS SS, A.ServiceSiteUid, A.LastModifiedDate, A.PersonUid,
B.FirstName, B.LastName, B.PersonUid,
C.Name
FROM Patient A
INNER JOIN Person B ON B.PersonUid = A.PersonUid
INNER JOIN ListServiceSite C ON C.ServiceSiteUid = A.ServiceSiteUid
)
SELECT *
FROM q
WHERE SS IS NOT NULL
ORDER By LastModifiedDate;
我使用以下方法将 3 table 中的 select 列加入到新的 table 中:
SELECT A.ExternalID, A.UserDefinedXml.value('(Skin_Sheet/@Label)[1]', 'varchar(3)') AS SS, A.ServiceSiteUid, A.LastModifiedDate, A.PersonUid,
B.FirstName, B.LastName, B.PersonUid,
C.Name
FROM Patient A
INNER JOIN Person B ON B.PersonUid = A.PersonUid
INNER JOIN ListServiceSite C ON C.ServiceSiteUid = A.ServiceSiteUid
WHERE SS IS NOT NULL
ORDER By LastModifiedDate;
这一切都有效,但我不确定如何引用从 XML 中提取的数据创建的列 SS
,所以我只能 select 值所在的观察值是 "Yes" 或 "No"。在 R 中我会创建一个新对象,但如果我不指定 table 名称是什么,我不确定 SQL 如何存储这个新的 table。
旁注,我确实尝试将其插入到新的 table 中,但 SQL 不允许我这样做,因为由于某种原因,连接导致 PersonUid
被复制.
提前谢谢你,我对 SQL 非常非常陌生,正在努力学习。
这会将您的结果放入临时文件 table,并避免出现两列同名的问题:
SELECT
A.ExternalID
,SS = A.UserDefinedXml.value('(Skin_Sheet/@Label)[1]', 'varchar(3)')
,A.ServiceSiteUid
,A.LastModifiedDate
,PersonUid_A = A.PersonUid
,B.FirstName
,B.LastName
,PersonUid_B = B.PersonUid
,C.Name
INTO #TempResults
FROM Patient A
INNER JOIN Person B ON B.PersonUid = A.PersonUid
INNER JOIN ListServiceSite C ON C.ServiceSiteUid = A.ServiceSiteUid
WHERE SS IS NOT NULL
ORDER BY LastModifiedDate;
概念上 WHERE 出现在 SELECT 之前,因此您需要将查询推送到派生的 table 子查询或通用 Table 表达式 (CTE) 以引用 SS
一个 WHERE 子句。 EG
with q as
(
SELECT A.ExternalID, A.UserDefinedXml.value('(Skin_Sheet/@Label)[1]', 'varchar(3)') AS SS, A.ServiceSiteUid, A.LastModifiedDate, A.PersonUid,
B.FirstName, B.LastName, B.PersonUid,
C.Name
FROM Patient A
INNER JOIN Person B ON B.PersonUid = A.PersonUid
INNER JOIN ListServiceSite C ON C.ServiceSiteUid = A.ServiceSiteUid
)
SELECT *
FROM q
WHERE SS IS NOT NULL
ORDER By LastModifiedDate;