【问题标题】:Fill the columns of a table with data from an specific cell on SQL Server?用 SQL Server 上特定单元格的数据填充表的列?
【发布时间】:2015-03-11 23:04:29
【问题描述】:

有可能吗?我有很多库存清单,每个商店一个,商店有一个 ID,我需要获取商店 ID 并复制到信息旁边的列上,我猜它可能是临时表,例如:

我想改变这个:

Col1    Col2  Col3
-------------------
NULL    NULL  NULL
Store   5537  NULL
NULL    NULL  NULL
stuff1   $57     2
stuff2   $34     5
stuff3   $13     1
stuff4   $28     2

进入这个:

Col1    Col2  Col3  Col4
------------------------
NULL    NULL  NULL  5537
Store   5537  NULL  5537
NULL    NULL  NULL  5537
stuff1   $57     2  5537
stuff2   $34     5  5537
stuff3   $13     1  5537
stuff4   $28     2  5537

通过从原始表中的 col2,row2 中获取数字。 请帮忙!我知道这可能不是通过重复所有次数来填充数据库的最佳方式,但我的老板希望这样。所以请帮我出出主意。

【问题讨论】:

  • 你怎么知道stuffN从商店5537和商店5538开始的地方?
  • 上传是一个一个文件,所以在我上传另一个文件之前没有5538。 5537 应该在第 4 列中的任何行上,直到“文件结束”。

标签: sql sql-server ssms sql-server-2014


【解决方案1】:

您可以使用CROSS APPLY

SELECT t.Col1, t.Col2, t.Col3, a.Col2 AS Col4 
FROM TableName t
CROSS APPLY (SELECT Col2 FROM TableName WHERE Col1 = 'Store') a

【讨论】:

  • 这就是我想要做的:SELECT tabla_nueva.f1, tabla_nueva.f2, tabla_nueva.f3, tabla_nueva.f4, tabla_nueva.f5, substring(tabla_nueva.F4,1,4) AS CR FROM tabla_nueva CROSS APPLY (SELECT tabla_nueva.F4 FROM tabla_nueva WHERE tabla_nueva.F1 like 'SUC%') A 但它只是重复所有列而不是我想要的数字。
  • @DanielPalomino,如果没有实际数据,很难说出您的查询出了什么问题。向您的问题添加一些数据,这些数据将导致您的查询失败,我会尽力帮助您。也许您应该在我的查询中注意到别名 a 以及我如何选择 a.Col2 而不是 TabbleName.Col2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-31
  • 2014-05-29
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
相关资源
最近更新 更多