【问题标题】:Shifting data in the SQl table在 SQL 表中移动数据
【发布时间】:2012-09-28 03:26:36
【问题描述】:

我有一个包含列的表格

ID,
Variant (INT), 
A1.....A20 (VARCHAR(16))

谁能推荐将列中的数据从 X 开始向右移动的最佳方法,其中 X 是参数,列 Variant 等于 Y(第二个参数)。

因此,我将不胜感激任何有关以 X 和 Y 作为参数并将数据从 Ax 开始的列中向右移动的存储过程的帮助,其中 Variant 等于 Y。

【问题讨论】:

  • 欢迎来到 Stackoverflow!您能否包括一些示例数据行以及给定特定 X 和 Y 时您期望的结果?
  • 带编号的列是一种 SQL 气味——它们通常表明您的数据未正确规范化。
  • @user - 我们真的很想提供帮助,所以如果您可以使用示例编辑您的问题,它将帮助我们了解您。例如,您刚刚添加了另一个约束providing the A20 does not contain any data。如果是这样呢?
  • 您可能对规范化是正确的,但我需要将其放入网格中,并且它更容易处理。它只是供我自己使用,因此不需要灵活性。我有一个包含简单字符串的网格/矩阵。它们是手动填写的,如果我犯了错误(忘记了),我需要为缺失的部分留出一个空间(如 Excel 中的插入列)。
  • 关于A20,在开始变速和上升错误之前我需要检查一下。

标签: sql stored-procedures shift


【解决方案1】:

你可以:

  1. 从现有表创建一个新表,列移动:

    创建表 my_new_table AS 选择 A20,19... FROM original_Table;

  2. 删除原来的

  3. 将这个新表重命名为原始表名

【讨论】:

  • 嗨,Alex,感谢您的及时回复。但是,我只想将某些列中的数据右移,从 Ax 到 A20(假设 A20 不包含任何数据)和 Where Varaint = Y。
  • 有点像这样。基本上我需要这个来为数据插入一个空格(列):XXXXXXX XXXXXXX XXXXXXX XXX XXXX XXX XXXX XXX XXXX XXX XXXX
  • 亲爱的,我又回到了代码的同一个地方。我最终要使用的 SQL 查询是这样的:
  • 亲爱的,我又回到了代码的同一个地方。我最终要使用的 SQL 查询是这样的:'UPDATE VariantTable SET A5 = A4, B5 = B4, A4 = A3, B4=B3, A3=null, B3=null SELECT A4, B4, A3, B3 FROM VariantTable WHERE VariantID = 2' 我现在遇到的问题是,如果我在 Management Studio 中运行此代码,它可以正常工作。但是我想从 C# 程序运行它并将这个字符串作为参数传递给 tableAdapter。在这种情况下,完全相同的代码会失败并出现错误:无法启用约束。一行或多行包含违反非空、唯一或外键约束的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
  • 1970-01-01
  • 2022-11-16
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多