mssql与同一表的联接条件

只需要一点帮助。所以我在这里有此日历表sqlfiddle.com/#!3/5d8a9有2个标记(M,W)指示月份或星期。我需要与具有每周日期字段的TBL2(下)进行连接。因此,我将在weekstartdate上将TBL2与开始日期(带有W标志的Cal表)一起加入,但如果weekstartdate在开始日期和结束日期之间,则需要返回带有'M'标志的开始日期。是否有意义?

TBL2:

prod_id        weeknum      wkstartdate     postingDate     qty
----------------------------------------------------------------
1043890         5           2015-01-25      2016-01-18      3
1043890         6           2015-02-01      2016-01-18      6
1043890         7           2015-02-08      2016-01-18      2
1043890         8           2015-02-15      2016-01-18      0
...
1043890         50          2015-12-06      2016-01-18      1
1043890         51          2015-12-13      2016-01-18      2
1043890         52          2015-12-20      2016-01-18      7


Desired Result:
==================

prod_id       weeknum      wkstartdate     postingDate     qty   Period
----------------------------------------------------------------------------
1043890         5           2015-01-25      2016-01-18      3    2015-01-25
1043890         6           2015-02-01      2016-01-18      6    2015-01-25
1043890         7           2015-02-08      2016-01-18      2    2015-01-25
1043890         8           2015-02-15      2016-01-18      0    2015-01-25
1043890         10          2015-03-01      2016-01-18      0    2015-03-01
...
1043890         50          2015-12-06      2016-01-18      1    2015-11-22
1043890         51          2015-12-13      2016-01-18      2    2015-11-22
1043890         52          2015-12-20      2016-01-18      7    2015-11-22

如果有道理,我正在尝试检查weekstartdate是否在带有标志M的日期范围(startdate-enddate)之间,然后带入startdate并用temp表更新该记录或使用temp表创建一个temp表。新列添加到每个记录。

谢谢。

斯雷尼瓦斯

我了解的是您试图将weekstarttable上的table2与startdate上的cal表连接起来,并且如果周开始日期介于开始日期和结束日期之间,则想修改标志。如果正确,请尝试以下查询。

select t2.prod_id,t2.weeknum,c.startdate
       ,case when t2.wkstartdate between c.startdate and c.enddate
        then 'M' else null end modifiedflag, 
        c.flag as originalflag 
from   cal c,table2 t2 
where  c.flag ='W' and t2.wkstartdate = c.startdate
       and t2.wkstartdate between c.startdate and c.enddate;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

使用不同的联接条件在同一表上进行多个联接

来自分类Dev

使用不同的联接条件在同一表上进行多个联接

来自分类Dev

在MySQL中联接同一表的临时表

来自分类Dev

在MySQL中联接同一表的临时表

来自分类Dev

使用同一表多次联接QueryDSL休眠

来自分类Dev

Postgres-左联接,同一表

来自分类Dev

Python Django:在同一表上联接

来自分类Dev

用于与AS联接同一表的codeigniter的代码

来自分类Dev

联接来自同一表的多个ID

来自分类Dev

左联接到同一表的SQL

来自分类Dev

子查询/在同一表上联接

来自分类Dev

PHP Activerecord-在同一表上联接

来自分类Dev

在同一表上过滤带有联接的选择

来自分类Dev

在同一表的多个联接列上建立索引的方法?

来自分类Dev

选择同一表上的多个联接

来自分类Dev

将具有同一表的多个联接(具有多个条件)的SQL转换为LINQ

来自分类Dev

Jooq:在三个表的联接中两次联接同一表

来自分类Dev

使用联接联接多个表(基本上是同一表)

来自分类Dev

内部联接到同一表两次在同一列上

来自分类Dev

从同一表中选择条件不同的字段

来自分类Dev

SQL选择同一表上的多个条件

来自分类Dev

根据同一表中的不同条件返回列

来自分类Dev

MySQL:如何从同一表中联接2列并使用另一表作为参考

来自分类Dev

如何从联接到同一表的数据表中选择?

来自分类Dev

如何从联接到同一表的数据表中选择?

来自分类Dev

表和同一表上的子查询之间的内部联接

来自分类Dev

将sql表行与同一表的所有其他行联接

来自分类Dev

根据datetime列左联接到同一表中的上一条记录

来自分类Dev

在一个查询中依靠同一表上的多个左联接

Related 相关文章

热门标签

归档