sql选择提取并链接上面的记录

时间:2015-02-19 14:14:17

标签: sql-server-2008

我的提取物需要一些帮助。下面是我的数据视图以及它是如何从MS SQL数据库中提取的。

我的挑战是数据库没有区别于不同的“电子邮件地址”。如何将电子邮件地址记录链接到上面的记录。

Secid|Name|Question|Answer|
2|load1|Name of Principle|Joe Make|
2|load1|Contact Number|12234423|
2|load1|Email address|joemake@mymail.com|
2|load1|Name of Principle|Amy Soup|
2|load1|Contact Number of Principle|23134|
2|load1|Email address|amysoup@mymail.com|
2|load1|Name of Teacher|james blue|
2|load1|Contact Number|8787878|
2|load1|Email Address|jamesblue@mymail.com|
2|load1|Name of Secretary|CHARLES black|
2|load1|Contact Number|989897|
2|load1|Email Address|chblack@mymail.com|

1 个答案:

答案 0 :(得分:0)

如果您没有任何要订购的列(例如,单调增加的标识列或时间戳),我真的害怕您的运气不好。无法保证任何查询行的任何排序。

可以做什么,然后将数据导出到Excel工作表中,然后手动查看并按正确的顺序排列,假设您可以弄明白。不幸的是,这确实是唯一的方法。


如果您有一个可以订购的列,您可以使用联接对行进行分组,假设您有办法识别每个集合的开头 - 在您的情况下,Question like 'Name of %'应该可以正常工作。假设一个名为Id的标识列,如:

select t.*, tGroupStart.Id as GroupId
from myTable t
join myTable tGroupStart on tGroupStart.Id <= t.Id
    and tGroupStart.Question like 'Name of %'
where not exists (
    select 1
    from myTable t2
    where t2.Id <= t.Id
    and t2.Question like 'Name of %'
    and t2.Id > tGroupStart.Id
)