2016-03-01 65 views
-3

我試圖從數據集中獲取總小時數,並且因爲您可以在兩次不同時間與同一家公司(company_B)擁有相同的資產兩次,所以我有此連接問題。我知道我想讓company_B的分鐘消失,company_B的Max消失了,因爲他們代表錯誤的日期匹配。負面很容易,但Max怎麼樣?刪除羣組中的最小值和最大值

我:

由assetid ------起始日期------- ------- FinishDate公司名稱---- HoursOnSite

22222 ----- --2016-02-12 ------- 2016-02-20 -------公司_A -------- 192

22222 ------- 2016- 02-01 ------- 2016-02-09 ------- Company_B -------- 208(keep)

22222 ------- 2016-02 -12 ------- 2016-02-09 ------- Company_B -------( - 56)(刪除)

22222 ------- 2016-02-01 ------- 2016-02-21 -------公司_B -------- 480(刪除)

22222 ------- 2016-02-12 ------- 2016-02-21 ------- Company_B -------- 216(keep)

55555 ------- 2016-02-18 ------- 2016-02-22 -------公司_C -------- 96

99584 --- ---- 2016-02-22 ------- 2016-02-25 ------- Company_D -------- 63

+1

您是如何嘗試的? –

+1

隨着你的嘗試,你使用的是什麼SQL服務器? – ub3rst4r

回答

1

我覺得你可以做查詢帶有公司B的最大和最小HoursOnSite的記錄,並使用(不在)或不等於排除這些記錄。

如果您仍有疑問,請粘貼您的查詢。

0

我假設必須有至少3個唯一的assetid - companyname組合的Max,Min過濾器才能工作。您可以在最終聲明中更改它以符合您的要求

WITH CTE 
AS (
    SELECT * 
     ,count(CompanyName) OVER (PARTITION BY AssetID,CompanyName) AS a 
    FROM <TABLE_NAME> 
    ) 
SELECT * 
FROM CTE 
WHERE HoursOnSite NOT IN (
     SELECT MAX(HoursOnSite) 
     FROM <TABLE_NAME> 
     ) 
    AND gdp NOT IN (
     SELECT min(HoursOnSite) 
     FROM <TABLE_NAME> 
     ) 
    AND a > 2 --MODIFY AS PER YOUR REQUIREMENT