sql - 根据条件连接多个表
问题描述
我有数据需要根据条件加入不同的表,月份。我正在使用proc sql。目前我正在使用
Proc sql;
create table test as
If month="mar"
then
select a.*,
b.var1,
b.var2,
from
data as a
left join
data2_mar
on a.id=b.id
else
select a.*,
c.var1,
c.var2,
from
data as a
left join
data2_April
on a.id=c.id;
Run;
但是,这是行不通的。非常感谢任何帮助。
解决方案
您可以使用条件连接在单个查询中执行此操作:
select
a.*,
coalesce(b.var1, c.var1) var1,
coalesce(b.var2, c.var2) var2
from data a
left join data2_mar b
on b.id = a.id
and month = 'mar'
left join data2_april c
on c.id = a.id
and month = 'april'
请注意,您不应该有多个表来存储不同月份的相同数据。相反,您应该有一个表,多一列来存储月份。
推荐阅读
- postgis - 如何将 OpenJUMP 连接到 PostgreSQL 10?
- python - Python,未使用 cxfreeze 定义的日志记录模块
- django - Django __str__ 返回非字符串(NoneType 类型),但来自 django/contrib/admin
- android - 无法从预填充的 SQLite 数据库中检索单个记录
- c# - HttpPostedFileBase 在文件上传时始终为空,模型绑定错误
- javascript - 忽略 Firefox 步骤不匹配表单验证
- algorithm - 分布式图搜索
- oracle - Spark:获取 SQLException:从 Oracle 读取的类型 -101 不受支持
- javascript - “加载资源失败:服务器响应状态为 404”express docker
- java - 使用 DOCX4J 从 DOCX 生成简单的 HTML