Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用两个表之间的最小日期更新表_Sql_Sql Server - Fatal编程技术网

Sql 使用两个表之间的最小日期更新表

Sql 使用两个表之间的最小日期更新表,sql,sql-server,Sql,Sql Server,我有两张桌子: @Temdate1 +------+------------+---------------+--------+ | Year | Entry_Date | DeliveryMonth | Symbol | +------+------------+---------------+--------+ | 2016 | 2016-01-07 | June | ABC | | 2015 | 2015-01-06 | June | ABC

我有两张桌子:
@Temdate1

+------+------------+---------------+--------+
| Year | Entry_Date | DeliveryMonth | Symbol |
+------+------------+---------------+--------+
| 2016 | 2016-01-07 | June          | ABC    |
| 2015 | 2015-01-06 | June          | ABC    |
| 2014 | 2014-01-05 | June          | ABC    |
| 2016 | 2016-03-05 | Sep           | CDE    |
| 2015 | 2015-03-04 | Sep           | CDE    |
| 2014 | 2014-03-03 | Sep           | CDE    |
+------+------------+---------------+--------+
所有产品

+-----------------+---------------+--------+
|      Date       | DeliveryMonth | Symbol |
+-----------------+---------------+--------+
| 2016-01-07      | June          | ABC    |
| 2016-01-08      | June          | ABC    |
| 2016-01-09      | June          | ABC    |
| 2016-01-10      | June          | ABC    |
| 2015-01-01      | June          | ABC    |
| 2015-01-02      | June          | ABC    |
| 2015-01-03      | June          | ABC    |
| 2014-01-05      | June          | ABC  |
+-----------------+---------------+--------+
结果我正在寻找更新的表格@Temdate1:

+------+------------+---------------+--------+
| Year | Entry_Date | DeliveryMonth | Symbol |
+------+------------+---------------+--------+
| 2016 | 2016-01-07 | June          | ABC    |
| 2015 | 2015-01-01 | June          | ABC    |
| 2014 | 2014-01-05 | June          | ABC    |
| 2016 | 2016-03-05 | Sep           | CDE    |
| 2015 | 2015-03-04 | Sep           | CDE    |
| 2014 | 2014-03-03 | Sep           | CDE    |
+------+------------+---------------+--------+
我使用此查询查找给定年份和给定产品的最小(最早)日期。通过这个查询,当Temdate1没有最早的日期时,如何用最早的日期更新它

SELECT 
 Year
,CASE 
     WHEN MIN([Date])<entry_date THEN MIN([Date]) 
     ELSE entry_date 
 END AS MDate 
FROM @TempDate1 a
INNER JOIN AllProducts b on a.DeliveryMonth =b.DeliveryMonth AND a.Symbol = b.Symbol
GROUP BY Year,entry_date
选择
年
案例

当MIN([Date])看起来您在预期结果中输入了错误,或者可能是我

Update a
   set Entry_Date = case when a.Entry_Date> b.Date then b.Date else a.Entry_Date end
from  
   @Tempdate1 a
inner join 
   @AllProducts b 
   on b.Symbol = a.Symbol
   and b.DeliveryMonth = a.DeliveryMonth
   and year(b.[Date]) = a.Year

提供数据结构和数据样本。您是否在询问如何使用查询输出来更新Temdate1?您能告诉我们Temdate1表的结构吗?您应该能够在update语句中使用这个case子句。@Eli当我尝试更新时,它告诉我
子查询返回了多个值@JulGreen-这就是我说的案例陈述可以在这里使用的意思。@Horaciux非常感谢,这就是我一直在寻找的东西,我想不出来。我把整个声明放在
Entry\u Date=
不客气的括号内。我刚改正了我的打字错误