我在excel中有一个值表,我想将其作为查找表放入sql中。表格如下:
sql表如下所示:
在SQL中使用它,我现在想永远不再使用excel文件。 我还需要能够更改参数,但是excel文件中的一些参数通过合并单元格进行链接,从而共享相同的值,如果它更改为一个更改的全部。 例如:当我更改产品1的参数B时,我需要它来更改产品2,3,4和5,因为它们在excel表中共享相同的单元格。如果我更改产品2的参数A,它只会更改产品2和3.我正在寻找 SQL查询解决方案。我也有能力改变表格结构。 这是我的示例查询:
Update [Table] Set [Parameter_A] = '{new_parameter_tag}'
Where [product] = '{selected_product_tag}'
除了我想让Where
包含从excel表共享同一个单元格的所有行。
我希望能够一次更新多个产品的SQL表,具体取决于它们是否在excel文件中共享该参数的相同单元格。
这是我对答案的初步猜测:
Select [{Parameter}],[Product],[Extra_column]
From [Table]
Where [Product] = '{selected_product}'
这将返回一行和[Extra_column],其中包含同一单元格分组中其他人共享的分组编号。然后将其存储为{Extra_column}。然后:
Update [Table] Set [{Parameter}] = '{new_parameter_value}'
Where [product] = '{selected_product}' Or [Extra_column] = '{Extra_Column}'
这需要两个查询,这也意味着我需要的列数是以前的两倍。我正在寻找一些更优雅的东西。
这是SQL Server 2012,而{}表示我从脚本传递的值。
答案 0 :(得分:0)
我最终做了类似于上面的事情,用户输入了他们想要编辑的组(在查看表格时很容易找出你想要的那个):
Update [table]
Set [{Parameter}]={NewValue}
Where [Extra_Column] = '{Extra_Column}'
我必须为分组索引添加三列,但是超过43个参数不会增加我的表大小。我没有考虑到如果我为单个产品更改单个参数而将其从"组"中删除的事实。本质上仅用于该参数,如果我对该参数进行组更改,我将覆盖更改的值。我可以添加一个检查,只更改该组内匹配的值,但无论哪种方式,用户都必须明智地了解他们的工作。幸运的是,他们可以在改变之前看到桌子。