我不知道这是否可以通过自我加入来实现。但我试过这样做。我有如下表:
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的唯一组合:value1和value2是水平分配的。我的意思是在下面的结构:
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)
如果我无法提出问题,请告诉我。
谢谢。
答案 0 :(得分:1)
如果您愿意,可以使用自联接执行此操作:
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;
在您的示例数据中,不需要modelid
和classid
。购买你也可以为他们添加平等条件。