如何编写用于查询具有几种条件的表的SQL查询

时间:2018-07-07 07:50:39

标签: sql sql-server

我有这些表:

enter image description here

我需要获取此表:

enter image description here

一个日期应该对应一个比率。速率选择如下:

  1. 如果两个表中的日期一致,则将表1中的日期分配给表2中的相应汇率。(例如,对于日期31/01 / 2014、31 / 03 / 2014、31 / 01 / 2015,您可以使用通常的左联接)。

  2. 如果表2中没有相应的日期(2014年2月28日),则需要采用该月的最后日期(来自表2(25-02-2014)) )。因此,必须将2014年2月28日的日期分配为18。

谢谢。

1 个答案:

答案 0 :(得分:0)

--first table
SELECT t2.*,
cast(datepart(mm,[date]) as varchar)+' '+cast(datepart(yyyy,[date]) as varchar) as 
MonthYear
into #tab1
FROM [BP].[dbo].[test1] t2;


----------------------------------------------
--second table
SELECT t.*,
cast(datepart(mm,[date]) as varchar)+' '+cast(datepart(yyyy,[date]) as varchar) as 
MonthYear,
row_number() over(partition BY 
cast(datepart(mm,[date]) as varchar)+' '+cast(datepart(yyyy,[date]) as varchar) 
ORDER BY [date] desc) num

into #tab2
FROM
[BP].[dbo].[test2] t
order by [date]

------------------------------------------------
-- result table
select t1.*, t2.rate
from #tab1 t1 left join (select rate, MonthYear  from #tab2 where num = 1) t2 on 
t1.MonthYear = t2.MonthYear 
order by [date];

select *
from [BP].[dbo].[test2]