我需要创建一个结合表和另一个视图的视图。
该表包含以下字段:
该视图包含以下字段:
棘手的部分是视图中的job_no值是表中job_no值的子集,当我将它们组合起来创建新视图时,我需要确保它们保持唯一。换句话说,如果表有[1,2,3,4,5]且视图有[2,3,5],则最终视图应该有[1,2,3,4,5]而不是[1 ,2,2,3,3,4,5,5]。
此外,并非表中的所有job_no值都具有hard_tax_exempt和soft_tax_exempt列的对应值,因此我不确定是否需要对此做一些特殊操作,或者SQL是否足够智能以自动将NULL分配给那些细胞。
示例表数据:
job_no ap_tax_exempt
------ -------------
1 True
2 True
3 False
4 False
5 True
示例视图数据:
job_no hard_tax_exempt soft_tax_exempt
------ --------------- ---------------
2 taxable NULL
3 nontaxable NULL
4 NULL taxable
我需要最终的观点:
job_no ap_tax_exempt hard_tax_exempt soft_tax_exempt
------ ------------- --------------- ---------------
1 True NULL NULL
2 True taxable NULL
3 False nontaxable NULL
4 False NULL taxable
5 True NULL NULL
任何帮助都将不胜感激。
答案 0 :(得分:2)
CREATE VIEW vw_NewView
AS
SELECT COALESCE(t.job_no, v.job_no) AS job_no
,t.ap_tax_exempt
,v.hard_tax_exempt
,v.soft_tax_exempt
FROM TableName t
FULL JOIN ViewName v
ON t.job_no = v.job_no;
答案 1 :(得分:1)
您需要left join
,因为并非所有table
条记录都有视图。这是SQLFiddle Demo,证明它有效。
CREATE VIEW finalView
AS
SELECT T.job_no,
T.ap_tax_exempt,
V.hard_tax_exempt,
V.soft_tax_exempt
FROM Table T
LEFT JOIN View V
ON T.job_no = V.job_no
答案 2 :(得分:0)
尝试
**Different SQL JOINS**
INNER JOIN:当BOTH中至少有一个匹配时返回所有行 表
LEFT JOIN:返回左表中的所有行,并匹配 右表中的行RIGHT JOIN:返回右边的所有行 表,以及左表中匹配的行
FULL JOIN:全部归还 当其中一个表中存在匹配时的行
你的案子:
使用Left Join
select a.job_no,a.ap_tax_exempt,b.hard_tax_exempt,b.soft_tax_exempt
from table_name a left join View_name b on a.job_no=b.job_no