在单个列和 return 所有其他列数据中查找重复项
Finding Duplicates in a single column and return all other column data
我有一个 table 数据,我想找到任何具有重复位置 #(我的数据列之一)的行。
我已经编写了一些有效的代码,但它不允许我看到额外的 Column/header 信息。
数据Table:
MainItem
BomLevel
Position
ComponentItem
CompDesc
TotalQty
316006
1
10
500006
Conv Kit
1
316006
1
20
562060
Battery
4
316006
1
30
VS147
Charger
1
316006
1
40
9970
Red Pad
1
316006
1
60
563844
Blue Pad
1
316006
1
60
512346
Machine
1
我愿意return:
MainItem
BomLevel
Position
ComponentItem
CompDesc
TotalQty
316006
1
60
563844
Blue Pad
1
316006
1
60
512346
Machine
1
这是我目前知道如何编写的代码:
select
a.MainItem
, a.BomLevel
, a.Position
from reports.v_bom a
where a.MainItem = '316006'
group by a.MainItem, a.BomLevel, a.Position
having Count (*) > 1
但这只会 return:
MainItem
BomLevel
Position
316006
1
60
由于您只标记了 SQL
,因此以下是 ANSI SQL 并将在大多数支持分析 window 函数的现代 RDBMS 中工作:
with c as (
select *, Count(*) over(partition by mainitem, bomlevel, position) cnt
from t
)
select *
from c
where cnt > 1;
我有一个 table 数据,我想找到任何具有重复位置 #(我的数据列之一)的行。
我已经编写了一些有效的代码,但它不允许我看到额外的 Column/header 信息。
数据Table:
MainItem | BomLevel | Position | ComponentItem | CompDesc | TotalQty |
---|---|---|---|---|---|
316006 | 1 | 10 | 500006 | Conv Kit | 1 |
316006 | 1 | 20 | 562060 | Battery | 4 |
316006 | 1 | 30 | VS147 | Charger | 1 |
316006 | 1 | 40 | 9970 | Red Pad | 1 |
316006 | 1 | 60 | 563844 | Blue Pad | 1 |
316006 | 1 | 60 | 512346 | Machine | 1 |
我愿意return:
MainItem | BomLevel | Position | ComponentItem | CompDesc | TotalQty |
---|---|---|---|---|---|
316006 | 1 | 60 | 563844 | Blue Pad | 1 |
316006 | 1 | 60 | 512346 | Machine | 1 |
这是我目前知道如何编写的代码:
select
a.MainItem
, a.BomLevel
, a.Position
from reports.v_bom a
where a.MainItem = '316006'
group by a.MainItem, a.BomLevel, a.Position
having Count (*) > 1
但这只会 return:
MainItem | BomLevel | Position |
---|---|---|
316006 | 1 | 60 |
由于您只标记了 SQL
,因此以下是 ANSI SQL 并将在大多数支持分析 window 函数的现代 RDBMS 中工作:
with c as (
select *, Count(*) over(partition by mainitem, bomlevel, position) cnt
from t
)
select *
from c
where cnt > 1;