我正在寻找一种在连接和联合之间进行混合的查找。我的主要数据集中有大量记录,因此我希望做一些不会成为多对多矩阵的“强力”方法。
这是我的主要数据集,名为“全部”,已包含所列每种产品的价格。
<script type="text/javascript">
$(document).ready(function(){
var submitClicked = false;
$(".searchform").submit(function(e){
if(submitClicked === false){
e.preventDefault();
var searchString = "#"+$("#s2").val();
submitClicked = true;
window.location = window.location.href+"?s="+searchString;
}
});
});
</script>
我的其他数据数据集('价格' - 此处未显示,但包含相同的两个键,产品和日期)包含每个可能日期的所有产品的价格。我想要创建的哈希表查找基本上会查找“全部”表中的每个日期,并输出该日期的所有产品的价格,从而产生如下表格:
product date price
apple 1/1/2011 1.05
apple 1/3/2011 1.02
apple 1/4/2011 1.07
pepper 1/2/2011 0.73
pepper 1/3/2011 0.75
pepper 1/6/2011 0.79
也就是说,只要一个产品的日期和价格指定为“全部”表,所有其他产品都应该从查询表中将其拉出来。 星号表示从价格表中查找价格,包含产品价格的新行基本上插入到新表中。
如果哈希表不是一个很好的解决方法,请告诉我其他方法。
答案 0 :(得分:1)
嗯,这远非优雅,但如果下面给你想要的结果好奇吗?由于ALL中每个键都有多个记录(我假设您要维护),我基本上将ALL与日期为All的PRICES中的记录联合起来,但我添加了一个Except,以便排除已经在ALL中的记录。不知道这是否有意义,或者正在做你想做的事情。当然不具备“优雅”的资格。
data all;
input product $7. date mmddyy10. price;
Y=1;
format date mmddyy10.;
cards;
apple 01/01/2011 1.05
apple 01/01/2011 1.05
apple 01/03/2011 1.02
pepper 01/02/2011 0.73
pepper 01/03/2011 0.75
pepper 01/06/2011 0.79
;
run;
data prices;
input product $7. date mmddyy10. price;
format date mmddyy10.;
cards;
apple 01/01/2011 1.05
apple 01/02/2011 1.04
apple 01/03/2011 1.02
apple 01/04/2011 1.07
apple 01/05/2011 1.01
pepper 01/01/2011 0.70
pepper 01/02/2011 0.73
pepper 01/03/2011 0.75
pepper 01/04/2011 0.76
pepper 01/05/2011 0.77
pepper 01/06/2011 0.79
;
run;
proc sql;
create table want as
select * from all
union corr all
( (select product,date,price from
prices
where date IN (select distinct date from all)
)
except corr
select product,date,price from all
)
;
quit;