2017-05-25 56 views
0

我無法進行查詢。我希望有人能幫助我。評估列中的每個值

讓我們說我有一個這樣的數據庫。

DateandTime PartNum FwVerOrErrDesc Pass 
date1   A    1   0 
date2   A    1   0 
date3   B    1   0 
date4   B    3   0 
date5   C    2   0 
date6   A    3   0 
date7   C    1   0 
date8   B    2   0 
date9   B    1   0 

Summarying我有日期,在這個例子中A,B和C,但在實際的數據庫中,我有超過100種不同的型號,在FwVerOrErrDesc我有一個類型的故障,再次我有很多個類型的模型失敗類型,Pass表示單元失敗。

我想要生成一個查詢,告訴我有多少個單元在特定故障中失敗,但是,由於在不同模型上有相同的故障,所以我不能計算故障(FwVerOrErrDesc)和按他們導致我只能得到所有失敗的總數,讓我們說「1」,但所有的模型,我想也被模型歧視。 (PartNum是模型)

我正在嘗試存檔是這樣的。

PartNum FwVerOrErrDesc Count 
    A   1   2 
    A   3   1 
    B   1   2 
    B   2   1 
    B   3   1 
    C   1   1 
    C   2   1 

我試着像這樣的東西:

SELECT 
    PartNum 
, [FwVerOrErrDesc] 
, COUNT(FwVerOrErrDesc) 

FROM [RceTestwareMfrLog].[dbo].[RceLogData] 
    WHERE Pass=0 and DateAndTime > DATEADD(day,DATEDIFF(day,'20010101',GETDATE()),'2001-01-01T06:00:00') 
    and DateAndTime < DATEADD(day,DATEDIFF(day,'20010101',GETDATE()),'2001-01-01T14:00:00') and 
    substring(SerialNum,1,8) <> '11111111' 
    GROUP BY [PartNum] 

但我得到了一個錯誤。

我希望有人能幫助我,非常感謝你的優勢。

+1

您從'GROUP BY'中缺少'FwVerOrErrDesc'。 –

回答

1

您需要在Group by子句中包含[FwVerOrErrDesc]列。試試這個

SELECT 
    PartNum 
, [FwVerOrErrDesc] 
, COUNT(FwVerOrErrDesc) as [count] 

FROM [RceTestwareMfrLog].[dbo].[RceLogData] 
    WHERE Pass=0 and DateAndTime > 
    DATEADD(day,DATEDIFF(day,'20010101',GETDATE()),'2001-01-01T06:00:00') 
    and DateAndTime < DATEADD(day,DATEDIFF(day,'20010101',GETDATE()),'2001-01-01T14:00:00') 
    and 
    substring(SerialNum,1,8) <> '11111111' 
    GROUP BY [PartNum],[FwVerOrErrDesc] 
+1

我現在感覺很傻,哈哈,它很簡單,但我無法弄清楚。謝謝。你幫了我很多錢。祝你今天愉快。 –

0

如果我理解正確的話,我會寫查詢爲:

SELECT PartNum, FwVerOrErrDesc, COUNT(FwVerOrErrDesc) 
FROM [RceTestwareMfrLog].[dbo].[RceLogData] 
WHERE Pass = 0 AND 
     DATEPART(hour, DateAndTime) BETWEEN 6 AND 13 AND 
     SerialNum NOT LIKE '11111111%' 
GROUP BY PartNum, FwVerOrErrDesc; 

當然,這個問題(因爲我在評論中提及)是GROUP BY缺少列。另外:

  • 這使用NOT LIKE而不是SUBSTRING()LIKE可以在模式以非通配符開頭時使用索引,因此使用這些模式是很好的習慣。
  • 這會爲時間比較明確提取小時。你也可以做類似cast(DateAndTime as time) between '06:00:00' and '14:00:00'
+0

謝謝,我會考慮你的建議。祝你今天愉快。 –