<menu id="w6w4q"></menu>
  • <object id="w6w4q"></object>
  • <menu id="w6w4q"><u id="w6w4q"></u></menu>
    <menu id="w6w4q"><u id="w6w4q"></u></menu>
  • <menu id="w6w4q"></menu>
    <menu id="w6w4q"><u id="w6w4q"></u></menu><menu id="w6w4q"></menu>
    <input id="w6w4q"></input>
  • <menu id="w6w4q"></menu>
    <input id="w6w4q"></input>
    <input id="w6w4q"></input>

    案例:利用sql批量更新部分时间的同比数据

    问题:如何将social_kol_tmp表 中的字段cost_YA中日期为201901-201909中的值替换为相同brand和pltform对应18年月份的col_cost字段的数据,其他日期的cost_Y值不变?

    假设:social_kol_tmp表 A,social_kol_tmp表B

    难点:可以利用join on brand和pltform相等,但是日期如何匹配呢?

    思路:通过对18年各月和对应19年的各个月份产生相应的字段,rn1和rn2

    注意,理论上结果中同一行两个时间只相差一年

    分享图片

    方案一:窗口函数生成rn1和rn2(结果需要看数据情况,原因如下)

    1. 代码如下:

    select a.brand,a.platform,a.period as Adt,b.period as Bdt,a.col_cost,b.col_cost as cost_YNew

    from (select col_cost,brand,platform,period,dense_rank() over (partition by brand,platform order by period) as rn1

      from social_kol_tmp

      where period>=‘201901‘ and period<‘201909‘

          ) a

     join

     ( select col_cost,brand,platform,period,dense_rank() over (partition by brand,platform order by period ) as rn2

       from social_kol_tmp

       where period>=‘201801‘ and period<‘201809‘

     ) b

    on a.rn1=b.rn2 and a.brand=b.brand and a.platform=b.platform

    2. 出现的问题:部分时间不对应

    注意,理论上结果中同一行两个时间只相差一年

     分享图片

    3 .原因分析:

    某个品牌的某一平台的数据不是每个月都有,排序产生的字段rn1和rn2出了问题,未按照对应的月份排序。

    方案二:case when 生成rn1rn2(成功)

    1. 代码如下:

    select a.brand,a.platform,a.period as Adt,b.period as Bdt,a.col_cost,b.col_cost as cost_YNew

    from (select col_cost,brand,platform,period,

                case when period=‘201901‘ then ‘1‘

                        when period=‘201902‘ then ‘2‘

                        when period=‘201903‘ then ‘3‘

                        when period=‘201904‘ then ‘4‘

                        when period=‘201905‘ then ‘5‘

                        else period

                   end as rn1        

              from social_kol_tmp

             where period>=‘201901‘ and period<‘201909‘

          ) a

     join

     ( select col_cost,brand,platform,period,

                case when period=‘201801‘ then ‘1‘

                        when period=‘201802‘ then ‘2‘

                        when period=‘201803‘ then ‘3‘

                        when period=‘201804‘ then ‘4‘

                        when period=‘201805‘ then ‘5‘

                   else period

            end as rn2

       from social_kol_tmp

       where period>=‘201801‘ and period<‘201809‘

     ) b

    on a.rn1=b.rn2 and a.brand=b.brand and a.platform=b.platform

    2.结果如下:

     分享图片

    检验:

    • Adt和Bdt的日期月份是对应的
    • 表中的数据Adt对应的col_cost是以1开头的,Bd对应的是以2开头的,故数据校验成功

    sql中实现数据更新的方法

    参考如下(sqlsever):

    1.创建一个表,sMedia.social_kol_tmp_new 201901-201909中的kol_cost替换为对应18年月份的数据

    Create table sMedia.social_kol_tmp_new as

    select a.brand,a.platform,a.period as Adt,b.period as Bdt,a.kol_cost,b.kol_cost as cost_YNew

    from (select kol_cost,brand,platform,period,

                case when period=‘201901‘ then ‘1‘

             when period=‘201902‘ then ‘2‘

             when period=‘201903‘ then ‘3‘

             when period=‘201904‘ then ‘4‘

             when period=‘201905‘ then ‘5‘

             when period=‘201906‘ then ‘3‘

            when period=‘201907‘ then ‘4‘

            when period=‘201908‘ then ‘5‘

            when period=‘201909‘ then ‘5‘

            else period

       end as rn1 

        from Media.social_kol_tmp_new 

       where period>=‘201901‘ and period<‘201909‘ 

          ) a

     join 

     ( select kol_cost,brand,platform,period,

                case when period=‘201801‘ then ‘1‘

            when period=‘201802‘ then ‘2‘

            when period=‘201803‘ then ‘3‘

            when period=‘201804‘ then ‘4‘

             when period=‘201805‘ then ‘5‘

             when period=‘201806‘ then ‘6‘

            when period=‘201807‘ then ‘7‘

            when period=‘201808‘ then ‘8‘

            when period=‘201809‘ then ‘9‘

           else period

          end as rn2

       from Media.social_kol_tmp_new  

       where period>=‘201801‘ and period<‘201809‘ 

     ) b

    on a.rn1=b.rn2 and a.brand=b.brand and a.platform=b.platform

     2.sMedia.social_kol_tmp 更新新数据

    update sMedia.social_kol_tmp 

    set cost_YA= cost_YNew

    from  sMedia.social_kol_tmp a,Media.social_kol_tmp_new b

    where a.period=b.Adt

    相关文章
    相关标签/搜索
    三期内必开一期特四肖白小姐资料 一肖中特2020年香港马会最快报码开奖结果直播历史记录免费资料网 驻马店市| 怀远县| 梁河县| 巴林左旗| 赤城县| 晋中市| 长垣县| 牙克石市| 阿克陶县| 城口县| 沿河| 醴陵市| 和田市| 翁牛特旗| 聂拉木县| 海盐县| 蓬莱市| 莎车县| 通化县| 闻喜县| 仁寿县| 辽中县| 成都市| 读书| 赤壁市| 阿拉善左旗| 炉霍县| 枣庄市| 五莲县| 永康市| 乐安县| 会昌县| 土默特左旗| 津南区| 南江县| 灌阳县| 昌图县| 虞城县| 都江堰市| 伊金霍洛旗| 台江县| 贡觉县| 舒城县| 武强县| 景宁| 南和县| 新野县| 克什克腾旗| 平陆县| 桂东县| 丁青县| 广德县| 普定县| 沐川县| 肥乡县| 介休市| 绥化市| 遂川县| 桦南县| 叶城县| 长沙市| 连江县| 花莲市| 大渡口区| 乃东县| 桦川县| 博乐市| 宜宾市| 家居| 肇庆市| 邵阳县| 砀山县| 藁城市| 开原市| 巴里| 安岳县| 昭通市| 洛宁县| 湖北省| 都江堰市| 边坝县| 山东省| 临西县| 双桥区| 富蕴县| 读书| 新沂市| 莱阳市| 济宁市| 贵溪市| 通州市| 泽普县| 宜昌市| 柘荣县| 乃东县| 穆棱市| 洛宁县| 台南县| 武义县| 屏东县| 齐河县| 云南省| 天祝| 临夏县| 吴忠市| 都匀市| 邹平县| 铜山县| 凤翔县| 阜宁县| 南溪县| 黑龙江省| 阿鲁科尔沁旗| 明光市| 福安市| 新蔡县| 宁陵县| 垦利县| 上虞市| 来凤县| 句容市| 碌曲县| 吴川市| 阳原县| 营山县| 宣武区| 远安县| 确山县| 双流县| 贵州省| 普安县| 永昌县| 卢龙县| 内江市| 虞城县| 太谷县| 都匀市| 大邑县| 运城市| 永胜县| 滦平县| 巢湖市| 通山县| 游戏| 绥阳县| 资中县| 罗定市| 漯河市| 赤壁市| 阿拉善右旗| 太和县| 温州市| 阿拉善左旗| 巴里| 聊城市| 二手房| 乐安县| 兰州市| 嘉祥县| 平潭县| 茌平县| 大足县| 仪陇县| 贡嘎县| 吴川市| 临朐县| 金华市| 府谷县| 六枝特区| 闸北区| 丹凤县| 上蔡县| 邯郸县| 南康市| 堆龙德庆县| 太原市| 临沭县| 光山县| 长泰县| 衡南县| 垦利县| 连城县| 岢岚县| 兴安盟| 新疆| 景洪市| 淮南市| 中西区| 洞头县| 荔浦县| 扎兰屯市| 铁岭市| 黄陵县| 巴彦县| 南溪县| 咸阳市| 玉溪市| 保山市| 休宁县| 五峰| 吉隆县| 大城县| 察隅县| 红桥区| 巨野县| 桂阳县| 崇文区| 平谷区| 呼玛县| 新乡市| 海安县| 滨州市| 茂名市| 宁国市| 焉耆| 巴塘县| 临高县| 天长市| 伊吾县| 登封市| 四会市| 麟游县| 阿勒泰市| 高碑店市| 乌拉特中旗| 界首市| 商城县| 仙桃市| 兰溪市| 盱眙县| 秦皇岛市| 龙南县| 土默特右旗| 黔东| 丹东市| 长岛县| 赤水市| 乐亭县| 万载县| 凭祥市| 剑川县| 甘洛县| 岳阳县| 建始县| 莱芜市| 乌鲁木齐县| 中西区| 呈贡县| 开封市| 辉南县| 堆龙德庆县| 屯昌县| 石柱| 罗城| 自贡市| 博罗县| 澄城县| 昭苏县| 同心县| 滦平县| 贵德县| 牟定县| 太康县| 南宫市| 石首市| 鸡泽县| 许昌市| 通渭县| 开化县| 康马县| 西畴县| 刚察县| 靖远县| 花莲市| 天镇县| 于田县| 台南市| 隆林| 龙州县| 乌拉特后旗| 宣化县| 儋州市| 故城县| 泽库县| 富锦市| 莲花县| 南阳市| 华阴市| 墨竹工卡县| 黎城县| 专栏| 湘潭市| 伊川县| 荆门市| 额济纳旗| 增城市| 辉南县| 塘沽区| 上蔡县| 新宾| 迁西县| 老河口市| 成都市| 崇文区| 温州市| 阳城县| 永新县| 四川省| 禹州市| 上虞市| 葫芦岛市| 镇原县| 玛沁县| 乡城县| 额尔古纳市| 平凉市| 霞浦县| 泊头市| 嘉禾县| 乌拉特中旗| 比如县| 石阡县| 布尔津县| 商南县| 彩票| 镇康县| 三门峡市| 调兵山市| 巴马| 北票市| 轮台县| 临澧县| 清河县| 将乐县| 板桥市| 乌审旗| 安平县| 玉环县| 永春县| 卫辉市| 嘉禾县| 普宁市| 寿光市| 曲阜市| 湖南省| 荥经县| 扎鲁特旗| 封开县| 浙江省| 新化县| 敦煌市| 集贤县| 寿宁县| 甘谷县| 奎屯市| 昌平区| 南和县| 曲麻莱县| 呼图壁县| 浦县| 柳林县| 定结县| 海宁市| 白水县| 阜阳市| 共和县| 林口县| 浦北县| 彰化市| 集贤县| 峡江县| 崇阳县| 安化县| 常熟市| 汾阳市| 山西省| 凤冈县| 通许县| 江都市| 台北县| 崇仁县| 玉龙| 张家港市| 衡山县| 当雄县| 宝坻区| 彰武县| 新沂市| 泗水县| 东莞市| 双流县| 青川县| 兰考县| 虎林市| 玉溪市| 三门县| 锡林郭勒盟| 靖宇县| 定安县| 南通市| 镇赉县| 监利县| 宁武县| 紫金县| 青海省| 齐齐哈尔市| 潮安县| 宣威市| 西贡区| 兴宁市| 磴口县| 罗江县| 株洲县| 长泰县| 扶风县| 牙克石市| 阜南县| 斗六市| 资溪县| 靖边县| 北票市| 始兴县| 班戈县| 清水县| 轮台县| 银川市| 永靖县| 咸宁市| 张家港市| 大冶市| 同江市| 乐东| 英山县| 基隆市| 诸城市| 邵东县| 南雄市| 麦盖提县| 喀喇沁旗| 长丰县| 正阳县| 张家港市| 甘南县| 鱼台县| 龙南县| 武安市| 文成县| 西乌珠穆沁旗| 望都县| 乐业县| 保定市| 华宁县| 大港区| 芜湖县| 云梦县| 师宗县| 会泽县| 资源县| 上犹县| 常州市| 泗阳县| 福鼎市| 鸡东县| 承德县| 托克逊县| 威远县| 隆尧县| 永昌县| 吉安县| 清原| 汾西县| 松溪县| 临泽县| 沽源县| 大同县| 海林市| 即墨市| 兰西县| 新营市| 鹤峰县| 三明市| 都安| 新巴尔虎右旗| 冀州市| 揭西县| 贵南县| 苗栗市| 阿拉善左旗| 得荣县| 长武县| 库车县| 手游| 谷城县| 博爱县| 新丰县| 咸宁市| 南京市| 体育| 沾化县| 旅游| 安溪县| 陆良县| 石家庄市| 荣昌县| 蛟河市| 台前县| 泰和县| 炎陵县| 剑阁县| 黑水县| 城口县| 漳州市| 云和县| 靖江市| 泰州市| 洪洞县| 天祝| 铜川市| 永安市| 乐至县| 和顺县| 龙海市| 自贡市| 武邑县| 漳平市| 仙桃市| 道真| 乌鲁木齐市| 新郑市| 广东省| 鲁山县| 菏泽市| 曲周县| 施甸县| 乐陵市| 宁晋县| 广水市| 科尔| 凤城市| 班戈县| 新密市| 上思县| 青川县| 民权县| 汝城县| 抚州市| 闽清县| 肃北| 赫章县| 襄樊市| 体育| 泸西县| 黄石市| 米泉市| 阿鲁科尔沁旗| 贞丰县| 丁青县| 仙居县| 金门县| 孟州市| 广宁县| 丰城市| 长汀县| 临邑县| 铁岭县| 清涧县| 宁蒗| 邵东县| 辽阳县| 永德县| 沙河市| 石屏县| 辽阳县| 穆棱市| 东港市| 依兰县| 汶上县| 长沙市| 镇远县| 临夏县| 屏东县| 东丽区| 葫芦岛市| 开化县| 论坛| 西峡县| 女性| 花垣县| 呼玛县| 邵阳县| 天气| 奉化市| 喜德县| 桦甸市| 日照市| 玉林市| 旬阳县| 名山县| 石门县| 毕节市| 资阳市| 肇庆市| 瑞安市| 黔西| 亳州市| 莎车县| 砀山县| 青川县| 石景山区| 鹤岗市| 来凤县| 阳山县| 丰都县| 德格县| 娱乐| http://wap.mcybrs.fit http://bm1961xotherz.fit http://ertnzz.fit http://www.rjqkqi.fit http://www.qpikuy.fit http://wap.xrbndi.fit http://wap.brckbk.fit http://bm1961needz.fit http://m.bm1961xapz.fit http://m.sqxnot.fit http://dlmilr.fit http://wap.oftkut.fit http://bxvtyu.fit http://wap.kvkupq.fit http://mixevu.fit http://wap.wozfox.fit http://shxeej.fit http://wap.zmccms.fit