首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL以确定要保留的行和要删除的行。

SQL以确定要保留的行和要删除的行。
EN

Stack Overflow用户
提问于 2021-12-02 14:52:47
回答 2查看 51关注 0票数 1

大家早上好,

我有点心不在焉,想看看有没有人能帮我。我有一个表,库存PDF文件,我们的办公室创建。我们已经更改了命名约定,我正在尝试开发逻辑,指定何时创建了一个具有新命名约定的PDF来标记旧的命名约定,以便我可以开发一个批处理脚本将它们移出文件位置。下面是一些例子。顺便说一下,每个文件在表中都是自己的行。

代码语言:javascript
复制
     PAR                          ORIGFILENAME

 111100000012         |          1100000012.pdf

 111100000012         |          1100000012_C_1_UB.pdf

 111100000012         |          1100000012_R_1.pdf

新的命名约定包含_R_Number或_C_Number。在上面的例子中,第一个文件是旧的,我想保留第二个文件。

第二个例子有更多内容。下面是5个文件。我想保留最后两个有新的命名约定,并删除前3。

代码语言:javascript
复制
    PAR                           ORIGFILENAME

 1100000076                      1100000076-2.pdf

 1100000076                      1100000076-3.pdf

 1100000076                      1100000076.pdf

 1100000076                      1100000076_C_7_BARN.pdf

 1100000076                      1100000076_R_1.pdf

如果我能在新文件存在时输入这些旧文件,我的计划是将这些名称开发成批处理脚本,并将其合并到每周运行一次的SSIS包中,以保持PDF存储库的干净。我感谢任何帮助和煽动。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-02 15:40:54

下面的工作应该是可行的,尽管更多的样本数据将是有用的。

以下使用可更新的CTE标识旧/新格式名称,并删除相同PAR具有新格式的旧格式

代码语言:javascript
复制
with f as (
  select *,
    case when OrigFilename like '%*_%' escape '*' then 0 else 1 end del
  from t
)
delete from f
where del=1 
  and exists (select * from f f2 where f2.par=f.par and f2.del=0)
票数 2
EN

Stack Overflow用户

发布于 2021-12-02 15:33:52

如果您试图突出显示要删除的记录--并且只想以旧格式返回记录,那么当C_7和R_1记录同时存在时,可能是这样吗?

代码语言:javascript
复制
;WITH c_7_records AS (
      SELECT par
        FROM my_table
       WHERE origfilename LIKE '%_C_7_%'
), 
r_1_records AS (
      SELECT par
        FROM my_table
       WHERE origfilename LIKE '%_R_1%'
), 
records_to_remove AS (
      SELECT 
    DISTINCT mt.origfilename
        FROM my_table AS mt
        JOIN c_7_records AS cr ON mt.par = cr.par
        JOIN r_1_records AS rr ON mt.par = rr.par
       WHERE mt.origfilename NOT LIKE '%_C_7_%'
         AND mt.origfilename NOT LIKE '%_R_1%'
)
SELECT * FROM records_to_remove;

sql小提琴

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70201648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档