与 inner join两个表一样,您可以在第二个表中没有行的情况下显示第一个表中的所有行。那些。如果表为@ListNumber空,则需要显示第一个 (table1) 表中的所有行。如何实施?
-- dbo.ListNum - Пользовательский тип данных
declare @ListNumber as dbo.ListNum
insert into @ListNumber values('1111'),('2222'),('3333')
select t.Num, sum(t.KOLVO) as kol
from table1 t join @ListNum l
on l.Num = t.Num
where t.column1 > 100
group by t.Num
一种选择是引入一个标志变量,其状态根据行的存在/不存在来设置
@ListNumber,并使用left join而不是inner join检查标志where:另一种选择是分支。如果
@ListNumber有字符串,则附加它们;如果没有,则不附加它们: