2016-02-19 81 views
0

對不起,我想請教一下這個我已經嘗試,但不能仍然得到它 確定我有這樣計數不同的數據在列1個計數的SQL Server

tblcount 
----------------------- 
no_req no_order no_grn 
R001 D001  G001 
R001    
R001 D001  G001 
R002 D002   
R002 D002  G002 
R003 D001  G001 
R004 D003  G002 
R004 D003  G002 
R005 D003  
R005 D003 
R006 D004  G002 
R006 D005  G003 
R006 D007 
R007 D007  G005 
R007 D008  G006 

我想算表像這樣的標準。 例如,從上面的表中可以看出,來自no_req的R001有3個數據,但no_order和no_grn只有2個,所以它不計數。它只會計算完整的數據。是這樣的:

  1. no_req R001與3點的數據,但no_order和no_grn只有2 =它不計數
  2. no_req R002與2點的數據沒有秩序與2點的數據,但no_grn 1 =僅它不計數
  3. no_req R003與1個數據no_order和no_grn用1個數據=它計數1
  4. no_req R004與2數據no_order和no_grn用2個數據=它計數1
  5. no_req R005與2數據no_order用2個數據,no_grn 0 =它不count
  6. no_req R0 06用的3個數據,no_grn 2個數據= 3的數據no_order它不計數
  7. no_req R007與2數據no_order和no_grn用2個數據=它計數1
從數據

所以上述我可以得到計數結果= 3 我應該做的,所以我可以從表中獲取該計數結果= 3以上

回答

3

試試這個:

SELECT COUNT(*) 
FROM (
    SELECT no_req 
    FROM tblcount 
    GROUP BY no_req 
    HAVING COUNT(*) = COUNT(CASE WHEN no_order <> '' THEN no_order END) AND 
     COUNT(*) = COUNT(CASE WHEN no_grn <> '' THEN no_grn END)) AS t 

內查詢選擇任何no_req組認爲statisfy的條件。外部查詢只計算這些組的數量。

Demo here

+0

我已經嘗試在我的SQL Server,但我得到的是7 是不是因爲從我的插入內容是 '' 而非NULL? INSERT INTO tblcount ('no_req','no_order','no_grn') VALUES ( 'R001', 'D001', 'G001'), ( 'R001', '','「), –

+0

@AndrianoCrs請檢查我所做的修改。 –

+0

哇,這就對了,我現在就要學習它了。< –

3

簡化@GiorgosBetsos logig:

SELECT COUNT(*) 
FROM 
(
    SELECT no_req 
    FROM tblcount 
    GROUP BY no_req 
    HAVING -- check if both columns always contain data 
    COUNT(CASE WHEN no_order = '' OR no_grn = '' THEN 1 END) = 0 
) AS t 
+0

是的,當然,更簡單! –

+0

謝謝Dieter,一個! – user1874594