SQL抓出重複的資料列疑問 |
缺席
|
redragon
一般會員 發表:1 回覆:2 積分:0 註冊:2015-03-07 發送簡訊給我 |
-- SQL抓出重複的資料列疑問
-- 第一次在此版提問題,如有不周敬請見諒! -- 要抓出重複的資料列來判斷 -- 重複的定義是同一天,同一客人,同業務,只能輸入一筆資料,2筆以上就是重複 -- 測試環境 MS SQL 2008 R2 EXPRESS -- 在看似雷同的SQL語法,卻有不同的答案,新手不得其解,盼先進同志加以指教 CREATE TABLE [dbo].[TestReInput] ( [日期] nvarchar(10), [客戶] nvarchar(10), [業務] nvarchar(10), [內容] nvarchar(10) ) INSERT INTO TestReInput VALUES ('2015/12/01','001','AA','1') INSERT INTO TestReInput VALUES ('2015/12/01','002','AA','1') INSERT INTO TestReInput VALUES ('2015/12/02','001','AA','1') INSERT INTO TestReInput VALUES ('2015/12/02','002','AA','1') INSERT INTO TestReInput VALUES ('2015/12/02','002','AA','2') INSERT INTO TestReInput VALUES ('2015/12/03','003','AA','1') INSERT INTO TestReInput VALUES ('2015/12/03','003','AA','2') INSERT INTO TestReInput VALUES ('2015/12/03','003','AA','3') INSERT INTO TestReInput VALUES ('2015/12/05','001','AA','1') INSERT INTO TestReInput VALUES ('2015/12/05','001','AA','2') INSERT INTO TestReInput VALUES ('2015/12/05','002','AA','1') -- 重複輸入的是'2015/12/02'有2筆,'2015/12/03'有3筆,'2015/12/05'有2筆,SQL目標要抓此7筆資料列出來 -- 查詢1: select * FROM [TestReInput] mm WHERE mm.[日期] In ( SELECT [日期] FROM [TestReInput] WHERE [客戶] = [mm].[客戶] And [業務] = [mm].[業務] GROUP BY [日期],[客戶],[業務] HAVING Count(*)>1 ) order by mm.[日期],mm.[客戶],mm.[業務] -- 執行結果共7筆資料列列出來,有表現出想要的結果 -- 查詢2: select * FROM [TestReInput] WHERE [日期] In ( SELECT mm.[日期] FROM [TestReInput] mm WHERE [客戶] = [mm].[客戶] And [業務] = [mm].[業務] GROUP BY mm.[日期],mm.[客戶],mm.[業務] HAVING Count(*)>1 ) order by [日期],[客戶],[業務] -- 執行結果共9筆資料列列出來 問題點: 1.查詢1,是我要的結果,但解讀語意,不是應該將第一層資料表[TestReInput]內[日期]符合第二層資料表找出的3個有重複的日期,共有9筆資料,但卻列出7筆? 2.查詢2與查詢1的差別只是 mm 替代字擺在第一層資料表與第二層資料表處,為何執行結果會不一樣? 3.是否還有其他SQL動作解析工具可以作更細微分析? 尚請先進,撥空指教 |
redragon
一般會員 發表:1 回覆:2 積分:0 註冊:2015-03-07 發送簡訊給我 |
|
redragon
一般會員 發表:1 回覆:2 積分:0 註冊:2015-03-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |