首页 > 解决方案 > 使用 SQL 的表列结构/变化分析

问题描述

我每天下载一个excel文件。它包含销售结果信息。但有时格式(列)会发生变化。例如,

Column <As-is> A B C D <Changed> D C E F

所以,我想用 SQL 来报告这个变化。会是这样。

我要分析的不是行(数据),而只是列(结构)。我试图通过将 SQL 连接到 Excel 文件来使用 SQL 语言操作 Excel 文件中的数据来做到这一点。

我制作了一个两行的excel文件:第一是前一列结构,第二是当前列结构。两列结构可能是表格的两行,我需要找到一种方法来获取我想要制作的分析报告。

标签: sqlsql-serverexcel

解决方案


这太长了,无法在评论中解释。首先,我看不到你想做的事情的效用。数据库的输入数据应该更稳定。因此,看起来你真正的问题是不同的——你还没有解释它。

其次,结果不明确。如果你想从 ABC 转到 CBF,那一组变化是“正确的”?

  • 删除 Column1 中的 A
  • 将 C 添加到 Column1
  • 从 Column3 中删除 C
  • 将 F 添加到 Column3

或者:

  • A 列已删除
  • C 列移至 Column1
  • F 列添加到第 3 列

综上所述,您可以使用以下方法比较两列information_schema

select ordinal_position,
       max(case when table_name = 'old' then column_name end) as old_name,
       max(case when table_name = 'new' then column_name end) as new_name
from information_schema.columns
where table_name in ('old', 'new')
group by ordinal_position;

我看不到如何简单地将其转换为您想要的结构。但如果这是一个真正的问题,我确实有一个建议是调查 Levenshtein 距离。您需要调整算法以支持字符串而不是字母,但这可能是您想要完成的。


推荐阅读