我有两个表:主数据和样本数据。
主数据包含“Key”,“from date”,“to date”,“PayTM”等列
示例数据包含“密钥”,“创建日期”,“付款”
列我正在尝试让代码执行此操作:
对于两个表之间的每个“关键”匹配>
确定“创建日期”是否介于“从日期”到“到日期”>之间。
如果是,则显示匹配/记录(来自样本数据表),包括PayTM和PayTS。 如果没有,请不要显示记录。 (并完成执行步骤2和3的所有比赛)
这是我到目前为止,但它显示的记录不匹配...我尝试用EXISTS替换WHERE NOT EXISTS但是它给了我一个错误。我的sql编码技巧非常基础,我正在努力尝试让代码在某种程度上超越它。
SELECT cd.*
FROM [Sample Data] as cd
WHERE NOT EXISTS (SELECT 1
FROM [Master Data] as md
WHERE cd.Key = md.Key AND
md.[Creation Date] BETWEEN md.From Date and md.To Date
);
答案 0 :(得分:1)
您的问题可以通过简单的连接来解决。类似的东西:
SELECT cd.* , md.*
FROM [Sample Data] as cd, [Master Data] as md
WHERE cd.Key = md.Key AND
cd.[Creation Date] BETWEEN md.[From Date] and md.[To Date];
注意:上面的查询是伪查询只是为了高亮的想法。
答案 1 :(得分:0)
我认为这应该处理它。
select
x.key_
,x.paytm
,x.payts
from(
select
md.key as key_
,cd.paytm as paytm
,cd.payts as payts
,case when md.creation_date between md.from_date and md.to_date
then 'goodie'
else 'baddie'
end as the_test
from
[master data] md
inner join
[sample data] cd
on cd.key = md.key
)x
where
x.the_test != 'baddie'