2013-10-16 23 views
0

基本上我都有,有一個where子句是 WHERE (DATEPART(yyyy, ESCDATE) = 2012) 是否有一個函數可以讓我循環一組變量?

有很多的查詢落後於其它代碼的SQL查詢。我知道我可以做一個聯盟,它工作正常,但當我想要做的是將上述日期改爲2011或2013時,我最終得到大量查詢。是否有更簡單的方法可以將此格式設置爲等效於多個變量而無需在UNION查詢中重複整個語句?

+0

如果您只需要一個不同的日期,則可以在2011和2013之間使用WHERE DATEPART(yyyy,ESCDATE)IN(2011,2012,2013)或WHAT DATEPART(yyyy,ESCDATE)。「OR」子句也是一種可能性,但往往表現不佳。 – DeanG

+0

這並不完全是我所追求的,這個SQL查詢的一部分進行了計算(例如,一家公司在一年中使用的分鐘數)。如果我使用IN等,那麼我會得到所有的結果。那有意義嗎? – Trinitrotoluene

回答

1

嘗試用一組IN子句組合由

WHERE DATEPART(yyyy, ESCDATE) IN (2011, 2012, 2013) 
GROUP BY DATEPART(yyyy, ESCDATE) 

您可能還需要by子句選擇其他值添加到組,而不是聚合值。

+0

這正是我所追求的。謝謝! – Trinitrotoluene

+0

我不認爲你知道有任何簡單的方法可以將它所指的年份列入不同的列中嗎?上述工作正常,我得到了三個結果,但我無法確定哪一個是2011年,哪一個是2012年,哪一個是2013年! – Trinitrotoluene

+0

您是否在最終輸出中選擇了日期部分?如果是這樣,那麼應該確定一年。否則,很難在沒有看到查詢的情況下回答這樣的問題。 – DeanG

0

您是否在尋找IN運營商?作爲

WHERE (DATEPART(yyyy, ESCDATE) IN (2011, 2012)) 
+0

否 - 我試圖簡化的select查詢會計算2012年的總計。如果我使用IN函數,那麼它將總計所有那些我不想要的年份。我想在2011年第1行的結果,然後在2012年第2行的結果等。感謝您的幫助到目前爲止:) – Trinitrotoluene

+0

如果你需要過濾數據,你仍然需要通過。但是,您指的是GROUP BY子句。 –

相關問題