我正在尝试将一些数据附加到现有查询中,但附加数据使用内部联接才能正常工作。我正在努力嵌套它而不丢失更大查询中的结果。
原始查询是由许多表构建的,因此需要:
select
T1.key1,
T1.data1,
T1.data2,
T1.data3,
T2.key1,
T2.data1,
T2.data2,
T2.data3
...
from Table1 T1
JOIN Table2 ON T1.key1=T2Key1
JOIN
...
WHERE (criteria).
然后出现第二个表,我尝试使用以下命令获取特定操作发生的最新日期:
select
NewTable.Key1,
NewTable.Data1,
NewTable.Data2,
NewTable.Data3,
NewTable.Data4,
NewTable.Data5,
Table1.Data2,
Table2.Data3
FROM tablename1 NewTable
INNER JOIN
(
select Data1, MAX(date) AS DateTime
FROM tablename1
WHERE (criteria)
GROUP BY Key1
) AS NewTable2 ON (NewTable.Key1 = NewTable2.Key1) AND (NewTable.Data1 = NewTable2.Data1)
LEFT JOIN Table 1...
LEFT JOIN Table 2...;
现在我想将此表作为第一个表中数据收集的一部分。我不需要 Table1 和 Table2 数据,因为它们是开始时表的一部分,但我正在努力包含第二个表而不丢失数据。
考虑到需要内部联接,并且不能影响以前的数据,合并这些附加数据的最佳方法是什么?本质上,我需要第一个查询中的所有数据,无论第二个查询产生什么,但第二个查询需要受到限制才能产生正确的结果?
到目前为止,我正在使用 Power Bi 合并两个结果表,但想知道是否有更有效的 wat。
您可以合并两个结果集,
select
T1.key1,
T1.data1,
T1.data2,
T1.data3,
T2.key1,
T2.data1,
T2.data2,
T2.data3
...
from Table1 T1
JOIN Table2 ON T1.key1=T2Key1
JOIN
...
WHERE (criteria)
Union all
select
NewTable.Key1,
NewTable.Data1,
NewTable.Data2,
NewTable.Data3,
NewTable.Data4,
NewTable.Data5,
Table1.Data2,
Table2.Data3
FROM tablename1 NewTable
INNER JOIN
(
select Data1, MAX(date) AS DateTime
FROM tablename1
WHERE (criteria)
GROUP BY Key1
) AS NewTable2 ON (NewTable.Key1 = NewTable2.Key1) AND (NewTable.Data1 = NewTable2.Data1)
LEFT JOIN Table 1...
LEFT JOIN Table 2...;