SQL:如何自加入


我不知道

这是否可以使用自连接来实现。但我尝试过这样做。我有如下表格:

storeid levelid modelid classid value1  value2
101     1       34       23      245    246
101     2       34       23      112    229
102     1       34       23      369    226
102     2       34       23      869    245
103     1       34       23      111    102
103     2       34       23      545    985

所以我想从这个表中进行选择,以便明确选择 storeid,并且对于 levelid、modelid、classid 的唯一组合:值 1 和值 2 被水平分配。我的意思是下面的结构:

storeid value1  value2  value1  value2
101      245    246       112    119
102      369    226       869    245
103      111    102       545    985

我只是带着自我加入的想法而来的,但我所做的并没有接近解决方案。如果不是解决方案,有用的想法也将不胜感激。以下是用于测试的查询:

create table  #tblTest
(
  storeid int,
  levelid int,
  modelid int,
  classid int,
  value1 int,
  value2 int,
)
insert into #tblTest (storeid,levelid,modelid,classid,value1,value2) values(101,1,34,23,245,246)
insert into #tblTest (storeid,levelid,modelid,classid,value1,value2) values(101,2,34,23,225,229)
insert into #tblTest (storeid,levelid,modelid,classid,value1,value2) values(102,1,34,23,245,226)
insert into #tblTest (storeid,levelid,modelid,classid,value1,value2) values(102,2,34,23,245,245)
insert into #tblTest (storeid,levelid,modelid,classid,value1,value2) values(103,1,34,23,245,102)
insert into #tblTest (storeid,levelid,modelid,classid,value1,value2) values(103,2,34,23,45,985)

如果我无法提出我的问题,请告诉我。

谢谢。

如果您愿意,可以使用自加入来执行此操作:

select t1.storeid, t1.value1, t1.value2, t2.value1, t2.value2
from #tbltest t1 join
     #tbltest t2
     on t1.storedid = t2.storedid and
        t1.levelid = 1 and t2.levelid = 2;

在示例数据中,不需要modelidclassid。 购买您也可以为它们添加平等条件。

相关内容

  • 没有找到相关文章

最新更新