不仅要显示转载数据还要显示非打印数据?使用左连接
Show not only the reprint data but also non-printed one? Using left join
select
barcode,
fullname,
social,
printdate,
(case
when min(orderId) = 0 then 'yes'
when min(orderid) <> 0 then 'No'
end) as Reprint
from
clientdata (nolock)
left outer join ReprintTable with(nolock) on
Code = barcode
where
clientcode = '334556'
--and printdate < '2021-02-23'
group by barcode,
fullname,
social,
printdate
order by
printdate
此查询背后的逻辑:
所以基本上我想显示所有重印卡和非重印卡,我使用左外连接加入重印 table(它存储重印卡的所有信息,如重印日期)
基本上如果卡片的orderid为0,则表示该卡片已经重印,反之亦然
我想让我的查询显示所有非重印卡并排除 23 日之前重印的重印卡,但是一旦我添加了 and
子句,非重印卡就没有了显示时间更长。
我该如何解决这个问题。
如果我重新添加 and
子句(不是真实数据,而是使用示例)的输出:
barcode fullname Social PrintDate Reprint
024556 Donald Wick 4556 2021-01-03 yes
024557 John Trump 4558 2021-01-08 yes
如果我去掉 and
子句:
barcode fullname Social PrintDate Reprint
024556 Donald Wick 4556 2021-01-03 yes
024557 John Trump 4558 2021-01-08 yes
024557 Stop Gambling 4556 null no
等...
无论如何,我可以让非转载数据与我筛选的转载范围一起显示吗?
您需要包括 printdate
为空的情况 - 即当 ReprintTable
table.
中不存在任何记录时
如果您为 table 设置别名并在列前加上 table 别名,事情就会变得更加清晰。
另请注意,由于某些 PrintDate
值为空,因此它可能不会像您预期的那样排序。
select barcode, fullname, Social, RT.PrintDate
, (
case when min(orderId) = 0 then 'yes'
when min(orderid) <> 0 then 'No'
end
) as Reprint
from ClientData CD with (nolock)
left outer join ReprintTable RT with (nolock) on Code = barcode
where clientcode = '334556'
and (RT.PrintDate is null or RT.PrintDate < '2021-02-23')
group by barcode, fullname, Social, RT.printdate
order by RT.PrintDate
select
barcode,
fullname,
social,
printdate,
(case
when min(orderId) = 0 then 'yes'
when min(orderid) <> 0 then 'No'
end) as Reprint
from
clientdata (nolock)
left outer join ReprintTable with(nolock) on
Code = barcode
where
clientcode = '334556'
--and printdate < '2021-02-23'
group by barcode,
fullname,
social,
printdate
order by
printdate
此查询背后的逻辑:
所以基本上我想显示所有重印卡和非重印卡,我使用左外连接加入重印 table(它存储重印卡的所有信息,如重印日期)
基本上如果卡片的orderid为0,则表示该卡片已经重印,反之亦然
我想让我的查询显示所有非重印卡并排除 23 日之前重印的重印卡,但是一旦我添加了 and
子句,非重印卡就没有了显示时间更长。
我该如何解决这个问题。
如果我重新添加 and
子句(不是真实数据,而是使用示例)的输出:
barcode fullname Social PrintDate Reprint
024556 Donald Wick 4556 2021-01-03 yes
024557 John Trump 4558 2021-01-08 yes
如果我去掉 and
子句:
barcode fullname Social PrintDate Reprint
024556 Donald Wick 4556 2021-01-03 yes
024557 John Trump 4558 2021-01-08 yes
024557 Stop Gambling 4556 null no
等...
无论如何,我可以让非转载数据与我筛选的转载范围一起显示吗?
您需要包括 printdate
为空的情况 - 即当 ReprintTable
table.
如果您为 table 设置别名并在列前加上 table 别名,事情就会变得更加清晰。
另请注意,由于某些 PrintDate
值为空,因此它可能不会像您预期的那样排序。
select barcode, fullname, Social, RT.PrintDate
, (
case when min(orderId) = 0 then 'yes'
when min(orderid) <> 0 then 'No'
end
) as Reprint
from ClientData CD with (nolock)
left outer join ReprintTable RT with (nolock) on Code = barcode
where clientcode = '334556'
and (RT.PrintDate is null or RT.PrintDate < '2021-02-23')
group by barcode, fullname, Social, RT.printdate
order by RT.PrintDate