sql - 将列转换为特定单词的行
问题描述
我在这样的excel表中有数据:
Number 123456
name John
province Quebec
Number 458965
name sammy
province ontario
我想将数据转换成行。
我想SQL server
通过导入excel
文件来做到这一点。
现在我正在寻找一个 SQL 查询,它可以给我如下所示的输出。一种方法是,当查询检测到Number
字段名称时,它应该将数据转换为行,直到Number
出现下一个字段。输出如下所示。
Number name province client type
解决方案
我确信有一种更有效的方法可以做到这一点,但是一旦您将 SQL 中的数据放在临时表中(我只是一起破解了一个方法来做到这一点,如果您有,您可以通过生成插入语句从 Excel 工作簿中做到这一点没有其他更简单的方法)...
DECLARE @tblData TABLE
(
iRowNo int identity(1,1),
sField nvarchar(100),
sValue nvarchar(1000)
)
INSERT INTO @tblData VALUES ('Number', '123456')
INSERT INTO @tblData VALUES ('name', 'John')
INSERT INTO @tblData VALUES ('province', 'Quebec')
INSERT INTO @tblData VALUES ('client', 'Client 1')
INSERT INTO @tblData VALUES ('type', 'Type 1')
INSERT INTO @tblData VALUES ('Number', '458965')
INSERT INTO @tblData VALUES ('name', 'sammy')
INSERT INTO @tblData VALUES ('province', 'ontario')
INSERT INTO @tblData VALUES ('client', 'Client 2')
INSERT INTO @tblData VALUES ('type', 'Type 2')
...您可以尝试以下查询...
SELECT iRowNo, sValue AS Number,
Name = (SELECT TOP (1) B.sValue FROM @tblData AS B WHERE B.sField = 'name' AND B.iRowNo > A.iRowNo ORDER BY iRowNo),
Province = (SELECT TOP (1) B.sValue FROM @tblData AS B WHERE B.sField = 'province' AND B.iRowNo > A.iRowNo ORDER BY iRowNo),
Client = (SELECT TOP (1) B.sValue FROM @tblData AS B WHERE B.sField = 'client' AND B.iRowNo > A.iRowNo ORDER BY iRowNo),
Type = (SELECT TOP (1) B.sValue FROM @tblData AS B WHERE B.sField = 'type' AND B.iRowNo > A.iRowNo ORDER BY iRowNo)
FROM @tblData AS A
WHERE sField = 'Number'
...这给了我以下结果...
...不确定这是否有帮助,但根据您的要求,我认为这就是您正在寻找的结果。
我不得不承认,大约 8 年前,我对 SQL 方面的事情很感兴趣,所以在这个新的时代,或者可能永远有更好的方法来得到你的答案。:-)
无论如何,值得一试......!
推荐阅读
- ios - 在 Swift 中将 2 个字典分组到一个数组中
- regex - 删除 AS3 中特定单词(字符串)之后的所有内容
- amazon-web-services - CloudWatch 警报触发频率高于预期
- html - 为什么 CSS 伪类不起作用?
- c++ - 如何从 qml Keys.onPressed 调用 qt keyPressEvent(QKeyEvent *event)
- php - 如何将计数结果显示到刀片模板
- ios - 如何在不重叠tableview ios swift中的其他单元格的情况下重用表格视图单元格
- python-3.x - 多个用户如何共享一个 PipFile
- wpf - WPF DataGrid:CanUserAddRows 产生空记录(当然还有空行)
- python-3.x - 计算熊猫中2个日期的分钟差