我正在编写一份包含大量选择列表的报告。报告中很少列是基于条件的。以下是我的示例表:
我想仅为那些m_is_req ='1'的客户选择c_id,cv_id和药物日期。对于具有m_is_req = null的其他客户,对于药物数据应该为null。另外对于一个客户我有多种药物。因此对于拥有m_is_req = null的客户端应该只显示一行。以下是我的查询。这为m_is_req = null的客户端生成多行。
select c.c_id, c.cv_id,
case when c.m_is_req = '1' then m.m_id else null end,
case when c.m_is_req = '1' then m.m_name else null end
from Client c join Medication m
on c.c_id = m.c_id
我想要的输出应该是:
答案 0 :(得分:0)
left join
应该有效。请注意在on
子句中添加第二个条件。此外,您不需要case
,因为所有这些字段都来自[Medication]
,并且因为连接而无效。
select c.c_id, c.cv_id, c.m_is_req,
m.m_id,
m.m_name
from Client c
left join Medication m on c.c_id = m.c_id and c.m_is_req = 1
Here是一个小提琴,以防你想测试它。