我有一個表,如下圖所示SQL查詢問題
Q_ID DeptID EmployeeName City
100 100 testest abcd
100 101 tata cdd
與100K記錄。我需要一個查詢,它應該獲取具有相同Q_ID但不同DEPTID的所有記錄。
請幫忙。
感謝
我有一個表,如下圖所示SQL查詢問題
Q_ID DeptID EmployeeName City
100 100 testest abcd
100 101 tata cdd
與100K記錄。我需要一個查詢,它應該獲取具有相同Q_ID但不同DEPTID的所有記錄。
請幫忙。
感謝
它加入到自己:
SELECT t1.*, t2.DeptID
FROM [MyTable] t1
INNER JOIN [MyTable] t2 ON t2.Q_ID=t1.Q_ID AND t2.DeptID>t1.DeptID
如果'<>'爲'>'或'<'以避免每一對的反射列表兩次? –
你也可以做到這一點與分析功能,從而避免加入。在更多的情況下,這會更有效率,但這取決於實際的數據和索引。
with TRanked as (
select
QID,
DeptID,
EmployeeName,
City,
dense_rank() over (
partition by CustomerID
order by EmployeeID
) as ct
from T
), TMaxRk as (
select
QID,
DeptID,
EmployeeName,
City,
max(ct) over (partition by CustomerID) as maxRk
from TRanked
)
select
QID,
DeptID,
EmployeeName,
City
from TMaxRk
where maxRk > 1;
所以看着這個你想每個部門只有1名員工回來?我們可以假設Q_ID和DeptID之間沒有關係嗎? –
您是否正在查找Q_ID與特定DeptID相關的記錄? 有點像Q_ID等於100且DeptID等於101的所有記錄? – ChadNC