[英]Adding data into one table from two select queries targeting different number of columns from two different tables
我有两个选择查询,每个查询在不同的条件条件下具有不同的列数。我想将从两个选择查询中收集的数据添加到一个表中。 我已经看过做“ UNION”的方法,但是在那种情况下,两个查询中的列数必须相同,如何将两个查询中的数据添加到单个表中。 我的查询如下:
Select
Village_ID,
Village_Name,
RSP_ID,
Other_Loan_Source,
Informal_Money_Lender_Loans
from(
Select DISTINCT SETTLEMENT_ID as Village_ID,
SETTLEMENT_NAME as Village_Name,
RSP_ID,
(SELECT COUNT(*) FROM PscData where SETTLEMENT_ID = T.SETTLEMENT_ID
AND TAKEN_LOAN = 6 )as Other_Loan_Source,
(SELECT COUNT(*) FROM PscData where SETTLEMENT_ID = T.SETTLEMENT_ID
AND TAKEN_LOAN = 5 )as Informal_Money_Lender_Loans
FROM PscData as T
)tmp
第二个查询是这样的:
SELECT
SUM(CASE WHEN t2.SEX = 1
THEN 1 ELSE 0 END) AS Total_Males,
SUM(CASE WHEN t2.SEX = 2
THEN 1 ELSE 0 END) AS Total_Females,
SUM(CASE WHEN t2.MARITAL_STATUS = 1
THEN 1 ELSE 0 END) AS Total_Married,
t1.SETTLEMENT_ID
FROM PScData t1
INNER JOIN PscMemberData t2
ON t2._PARENT_AURI = t1.URI
GROUP BY
t1.SETTLEMENT_ID
HAVING COUNT(*) > 1;
我如何将这些结果合并到一张表中。
您可以首先使用联合创建表格,并且仅使用两个表格中都存在的字段。 然后,将此表与原始表连接以添加其余字段。
with cte as (
select Village_ID as village_settlement_id
from #tmp_1
union
select SETTLEMENT_ID as village_settlement_id
from #tmp_2
)
select *
, #tmp_1.Village_ID
, #tmp_1.Village_Name
, #tmp_1.RSP_ID
, #tmp_1.Other_Loan_Source
, #tmp_1.Informal_Money_Lender_Loans
, #tmp_2.Total_Males
, #tmp_2.Total_Females
, #tmp_2.Total_Married
from cte
left join #tmp_1 on cte.village_settlement_id = #tmp_1.Village_ID
left join #tmp_2 on cte.village_settlement_id = #tmp_1.SETTLEMENT_ID
您为什么不只向第二个表中添加一个虚拟列?
SELECT
SUM(CASE WHEN t2.SEX = 1
THEN 1 ELSE 0 END) AS Total_Males,
SUM(CASE WHEN t2.SEX = 2
THEN 1 ELSE 0 END) AS Total_Females,
SUM(CASE WHEN t2.MARITAL_STATUS = 1
THEN 1 ELSE 0 END) AS Total_Married,
t1.SETTLEMENT_ID ,
'' Informal_Money_Lender_Loans
FROM PScData t1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.