我有一個包含資料的表,我想找到任何具有重復位置#(我在資料中的列之一)的行。
我撰寫了一些有效的代碼,但它不允許我查看其他列/標題資訊。
資料表:
| 主要專案 | BomLevel | 位置 | 組件項 | 比較 | 總數量 |
|---|---|---|---|---|---|
| 316006 | 1 | 10 | 500006 | 轉換套件 | 1 |
| 316006 | 1 | 20 | 562060 | 電池 | 4 |
| 316006 | 1 | 30 | VS147 | 充電器 | 1 |
| 316006 | 1 | 40 | 9970 | 紅墊 | 1 |
| 316006 | 1 | 60 | 563844 | 藍墊 | 1 |
| 316006 | 1 | 60 | 512346 | 機器 | 1 |
我想回傳:
| 主要專案 | BomLevel | 位置 | 組件項 | 比較 | 總數量 |
|---|---|---|---|---|---|
| 316006 | 1 | 60 | 563844 | 藍墊 | 1 |
| 316006 | 1 | 60 | 512346 | 機器 | 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
但這只會回傳:
| 主要專案 | BomLevel | 位置 |
|---|---|---|
| 316006 | 1 | 60 |
uj5u.com熱心網友回復:
因為您只標記SQL了以下是 ANSI SQL,并且將在大多數支持分析視窗函式的現代 RDBMS 中作業:
with c as (
select *, Count(*) over(partition by mainitem, bomlevel, position) cnt
from t
)
select *
from c
where cnt > 1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/451596.html
