答案 0 :(得分:0)
坦率地说,你的结构没有有效的方法。没有什么可以将记录链接在一起并知道哪些记录真正属于一起。没有业务规则,连接是随机的,因此是可疑的。
另外请记住,您无法分辨在此表结构中输入记录的顺序,因此您无法假设您在ICD 10中看到的第一条记录属于您查看的第一条记录对于ICD9。并且是否会出现只有两个记录中的一个或另一个的记录问题?你将如何处理这个?
是的,我可以编写一个查询来获取您要求的结果,但结果在任何想象中都不正确。如果不重新设计数据库,就无法完成此任务。
答案 1 :(得分:-1)
我会用perl中的哈希来做。您将需要更改数据库 访问MSSQL,在我下面的例子中使用我自己的MySQL数据库抽象模块。但你应该得到基本的想法。 现在你的例子对于Ruleid或Shortdesc没有任何不同的值, 因此,如果源表中有不同的值,则需要对其进行修改 因为它没有考虑到这一点
my(%DATA);
my($count)=0;
$DB->OpenQuery("SELECT Ruleid,Shortdesc,'ICD-10' FROM SOURCETABLE WHERE 'ICD-9' is NULL ORDER BY <WHATEVER YOU DID>");
while(my($r,$s,$i) = $DB->FetchRow())
{
$count++;
$DATA{$count}{'Ruleid'}=$r;
$DATA{$count}{'Shortdesc'}=$s;
$DATA{$count}{'ICD-10'}=$i;
}
$DB->CloseQuery();
$count=0;
$DB->OpenQuery("SELECT 'ICD-9' FROM SOURCETABLE WHERE 'ICD-10' IS NULL ORDER BY <WHATEVER YOU DID>");
while(my($i) = $DB->FetchRow())
{
$count++;
$DATA{$count}{'ICD-9'}=$i;
}
$DB->CloseQuery();
foreach my $k (sort { $a <=> $b } keys(%DATA))
{
$DB->Do("INSERT INTO NEWTABLE SET Ruleid=?,Shortdesc=?,'ICD-9'=?,'ICD-10'=?",$DATA{$k}{'Ruleid'},$DATA{$k}{'Shortdesc'},$DATA{$k}{'ICD-9'},$DATA{$k}{'ICD-10'});
}