2013-04-05 82 views
1
CREATE TABLE `table` 
    (`source` varchar(20), `eventid` varchar(9), `system` varchar(10),`accountname` varchar(10)) 
; 

INSERT INTO `table` 
    (`source`, `eventid`, `system` ,`accountname`) 
VALUES 
    ('uatapp', '528', 'bxw','jbb'), 
    ('uatapp', '528', 'bxw','jbc'), 
    ('nxapp', '530', 'gg','ff'), 
    ('aaunswh20', '528', 'ccd','ff'), 
    ('172.1.12.3', '528','vv','ff'), 
     ('172.1.12.3', '528', 'vv', 'ff'), 
    ('172.1.12.3', '528','vv','ff3') 
; 

如果我使用的查詢提取物組,多行

SELECT SOURCE,accountname,SYSTEM, count(*) 
FROM  `table` 
WHERE eventid = '528' 
GROUP BY SOURCE,accountname 

我得到的結果

SOURCE ACCOUNTNAME  SYSTEM COUNT(*) 
172.1.12.3 ff vv 2 
172.1.12.3 ff3  vv 1 
aaunswh20 ff ccd  1 
uatapp jbb  bxw  1 
uatapp jbc  bxw  1 

我想結果只顯示

SOURCE ACCOUNTNAME  SYSTEM COUNT(*) 
172.1.12.3 ff vv 2 
172.1.12.3 ff3  vv 1 
uatapp jbb  bxw  1 
uatapp jbc  bxw  1 

(即)分組的來源,帳戶名與多行,而不是一個單行如AAUNSWH20。

有人可以制定所述查詢感謝幫助..

+0

這是什麼DBMS?有點重要。也許mysql?啊,它必須是,因爲你的「GROUP BY」不包括「SYSTEM」。 – ErikE 2013-04-05 23:36:58

+0

是的,它是mysql – user2250991 2013-04-06 02:15:42

回答

1

你很可能拒絕的基本查詢是一個正常顯示源和系統,但accountname不組:

SELECT source, system 
FROM `table` 
WHERE eventid = '528' 
GROUP BY source, system 
HAVING Count(DISTINCT accountname) >= 2; 

這樣做的問題是,那麼你可以不看什麼帳戶名字被使用。這可以通過將這個查詢到派生表來完成,用加入回到原來的表,就像這樣:

SELECT DISTINCT 
    T.* 
FROM 
    `table` T 
    INNER JOIN (
     SELECT source, system 
     FROM `table` 
     WHERE eventid = '528' 
     GROUP BY source, system 
     HAVING Count(DISTINCT accountname) >= 2 
    ) D ON T.source = D.source 
     AND T.system = D.system 
WHERE 
    T.eventid = '528' 
; 

看到這個工作in a Sql Fiddle

+0

謝謝埃裏克,它運作良好。 – user2250991 2013-04-06 04:26:42

0

也許你可以使用這個:

SELECT SOURCE,accountname,SYSTEM, count(*) 
FROM  [table] a 
WHERE eventid = '528' 
and exists (select source, COUNT(*) from [table] b 
      where a.eventid = b.eventid 
      and a.source = b.source 
      group by source 
      having COUNT(*) > 1) 
GROUP BY SOURCE,system,accountname 

反正table保留關鍵字,所以在查詢中使用[]

+0

謝謝..但它沒有給我正確的結果 – user2250991 2013-04-06 04:18:05