我知道標題聽起來很簡單。但是,這實際上是我可以考慮在當時措辭的唯一方式。讓我來解釋進一步SQL:如何計算表中所有數據的某些日期範圍
我得到Repairs
修復數據上SN
我需要爲是在一年之內從每一個季度開始,該表的每一行做計算,我INNER JOIN
爲Hours
表。以下是我組織的季度開始日期:
Q1開始日期= 1月1日; Q2開始日期= 4月1日; Q3開始日期= 7月1日; Q4開始日期= 10月1日
所以,我需要數從Repairs
的Failures
和#OfHours
從Hours
- 從1月1日至12月31日; 4月1日至次年3月31日等....我需要sum
所有的失敗到幾小時來計算平均無故障時間。
有人可以幫我開始這個查詢;它開始挫敗我,我是一名實習生,並希望在不問我的經理的情況下完成此任務。謝謝
我知道我想要做的事情,但我在腦海中的語法混亂。
編輯:
以下是我的查詢來獲取我想要的原始數據:
SELECT *
FROM Hours H
INNER JOIN Repair R
ON H.SN = R.SN
WHERE R.Confirmed NOT LIKE 'OC%' OR R.Confirmed NOT LIKE 'YC%'
因爲有超過70,000行,我會限制結果做到20 Calcs(計算);抽樣結果如下(我只包括相關列:
-------------------------------------------------------------------
SN |Type |Hours |ReportDate |Part |DateReceived |
-------------------------------------------------------------------
1111 |Ford |170 |2012-05-01 |9000000 |2012-10-19
2222 |Ford |170 |2012-05-01 |9000001 |2012-10-12
3333 |Ford |170 |2012-05-01 |9000002 |2012-10-19
4444 |Chevy |180 |2013-04-01 |9000001 |2014-04-04
5555 |Chevy |180 |2013-04-01 |9000002 |2014-03-30
6666 |Chevy |180 |2013-04-01 |9000003 |2014-04-04
7777 |Dodge |180 |2012-03-01 |9000001 |2012-03-30
8888 |Dodge |174 |2012-03-01 |9000001 |2012-04-04
9999 |Dodge |174 |2012-03-01 |9000001 |2012-03-30
1212 |Chevy |210 |2012-03-01 |9000002 |2012-04-04
2323 |Lincoln |140 |2010-04-01 |9000001 |2012-05-30
3434 |Lincoln |140 |2010-04-01 |9000002 |2012-04-04
4545 |Lincoln |140 |2010-04-01 |9000000 |2012-03-30
5656 |Dodge |10 |2010-02-01 |9000004 |2012-04-04
6767 |Chevy |190 |2011-02-01 |9000005 |2012-03-30
7878 |Lincoln |160 |2011-02-01 |9000000 |2012-04-04
8989 |Dodge |140 |2011-06-01 |9000001 |2012-03-30
0101 |Chevy |169 |2011-07-01 |9000001 |2012-04-04
我要做的MTBF計算GROUPED BY
TYPE
和GROUPED BY
PART
我需要檢索季度之間的一年間所有的報告日期爲曾表示林。 。在我的腦海混雜這一點,並不能把握查詢做到這一點
任何幫助將是巨大的感謝
編輯:關於什麼是我想要做的
更好的理解以下是我想要做的一個很好的例子,但它需要每一個季度做(這個查詢不會放棄什麼,我想雖然):
DECLARE @BeginDate date = '1013-01-01'
BEGIN
SELECT *
FROM Hours H
INNER JOIN Repair R
ON H.SN = R.SN
WHERE (R.Confirmed NOT LIKE 'OC%' OR R.Confirmed NOT LIKE 'YC%') AND (DATEDIFF([DAY], @BeginDate, DateReceived) <= 365) AND (DATEDIFF([DAY], @BeginDate, ReportDate) <= 365)
END
我想上面的查詢來獲取我所有的記錄,其中ReportDate
和DateReceived
都在一年內。這會產生每季度I.E的年度報告。 1月1日 - 12月31日,4月1日 - 3月31日,7月1日 - 9月31日和10月1日 - 12月31日。
同樣,這不會產生我想要的結果,但可能會更好地理解我'米試圖做。再次,這將在每個季度完成。
編輯:下面是一些示例輸出應該看起來像給出上述查詢。我將Type
列更改爲單個字母以提高效率;它不是有關:
您能舉一個具體的數據例子嗎?像一些行與相關的列?或者至少是列名?這將有助於你。 –
是的......這將是一個分鐘雖然...我必須「虛擬」它(敏感) –
@magic_al我提供了一些示例數據,我也忘記了從'Repairs'添加一個'Date Received'列這是失敗的日期......「ReportDate」列是我獲得的關於運行多少小時的月度報告日期。 –