我试了几个小时并阅读了很多帖子,但我仍然无法弄清楚如何处理这个请求:
我有这样一张桌子:
+------+------+
|ARIDNR|LIEFNR|
+------+------+
|1 |A |
+------+------+
|2 |A |
+------+------+
|3 |A |
+------+------+
|1 |B |
+------+------+
|2 |B |
+------+------+
Run Code Online (Sandbox Code Playgroud)
我想选择使用不同LIEFNR不止一次出现的ARIDNR.
输出应该是这样的:
+------+------+
|ARIDNR|LIEFNR|
+------+------+
|1 |A |
+------+------+
|1 |B |
+------+------+
|2 |A |
+------+------+
|2 |B |
+------+------+
Run Code Online (Sandbox Code Playgroud)
Yuc*_*uck 53
这应该这样做:
SELECT *
FROM YourTable
WHERE ARIDNR IN (
SELECT ARIDNR
FROM YourTable
GROUP BY ARIDNR
HAVING COUNT(*) > 1
)
Run Code Online (Sandbox Code Playgroud)
我们的想法是使用内部查询来识别在数据ARIDNR
中出现1次以上值的记录,然后根据该组值从同一个表中获取所有列.
Has*_*man 38
请试试这个.我检查了它,它正在工作:
SELECT *
FROM Table
WHERE ARIDNR IN (
SELECT ARIDNR
FROM Table
GROUP BY ARIDNR
HAVING COUNT(distinct LIEFNR) > 1
)
Run Code Online (Sandbox Code Playgroud)
Seg*_*ult 11
加入同一个表回到自己.使用内部联接,以便丢弃不匹配的行.在连接集中,将在表中的另一行中具有匹配的ARIDNR的行具有不同的LIEFNR.允许那些ARIDNR出现在最终集中.
SELECT * FROM YourTable WHERE ARIDNR IN (
SELECT a.ARIDNR FROM YourTable a
JOIN YourTable b on b.ARIDNR = a.ARIDNR AND b.LIEFNR <> a.LIEFNR
)
Run Code Online (Sandbox Code Playgroud)