问题: 我有两个表,Table1有3列[CODE],[CAT],[GROUP]并基于第2列和第2列中的值。 3我想在表2中创建条目。
表2有2列[CODE]和[ALTERNATECODE] - 另请注意Table2在开始时没有数据。
对于Table1中的每个条目(仅当匹配条目超过1个时)我想在table2中为每个匹配的大小写创建一个条目,table2.CODE = table1.code,Table2.alternatecode = Table1.code on匹配条目(条目)。对table1.CAT和Table1.GROUP进行了修改,所有匹配的条目必须将所有其他匹配条目作为表2中的ALTERNATECODES。
SQL:
数据 - 表1:
28644 138 10
27817 138 10
8019 138 11
8018 138 11
21044 138 12
20985 138 12
20986 138 12
10166 138 12
10165 138 12
8056 138 15
11611 139 1
21999 139 1
27497 139 1
11612 139 2
30245 139 3
84409 139 4
26023 139 4
22000 139 5
更新后 - 数据表2:
28644 27817
27817 28644
8019 8018
8018 8019
21044 20985
21044 20986
21044 10166
21044 10165
20985 21044
20985 20986
20985 10166
20985 10165
20986 21044
20986 20985
20986 10166
20986 10165
10166 21044
10166 20985
10166 20986
10166 10165
10165 21044
10165 20985
10165 20986
10165 10166
11611 21999
11611 27497
21999 11611
21999 27497
27497 21999
27497 11611
84409 26023
26023 84409
所以基本上是匹配标准的结果。 表1中的1个条目表示表2中的0个条目, 表1中的2个条目表示我们在table2中有2个条目 表1中的3个条目表示我们在table2中有6个条目
答案 0 :(得分:2)
我希望我理解正确。听起来你想要使用不相等的代码自我加入类别和组。
public class TestPara {
public static void main(String[] args) throws InterruptedException {
Counter counter = new Counter();
AdderCounter ac = new AdderCounter(counter);
SubberCounter sc = new SubberCounter(counter);
Thread t1 = new Thread(ac);
Thread t2 = new Thread(sc);
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println(counter.c);
}
}
class AdderCounter implements Runnable{
Counter counter;
public AdderCounter(Counter counter) {
this.counter = counter;
}
@Override
public void run() {
counter.increment();
System.out.println(counter.value());
}
}
class SubberCounter implements Runnable{
Counter counter;
public SubberCounter(Counter counter) {
this.counter = counter;
}
@Override
public void run() {
counter.decrement();
System.out.println(counter.value());
}
}
答案 1 :(得分:1)
我认为你需要一个简单的插入,具有直接和反向的关系。
;WITH Relationships AS
(
SELECT
Code = T.Code,
AlternateCode = N.Code
FROM
Table1 AS T
INNER JOIN Table1 AS N ON
T.Cat = N.Cat AND
T.[Group] = N.[Group]
WHERE
T.Code <> N.Code
)
INSERT INTO Table2 (
Code,
AlternateCode)
SELECT
Code = D.Code,
AlternateCode = D.AlternateCode
FROM
Relationships AS D
UNION
SELECT
Code = D.AlternateCode,
AlternateCode = D.Code
FROM
Relationships AS D
答案 2 :(得分:1)
不太清楚你在这里想做什么。也许是这样的?
select t1.Code
, t1.Cat
from SomeTable t1
join SomeTable t2 on t1.Code = t2.Code
and t1.Group = t2.Group
and t1.Cat <> t2.Cat