我的查詢是像below.I要選擇值如果TYPE = 1和亞型= 1,3或2在SQL Server中使用IN子句
select sum(case when Type = 1 and SubType in (1, 3 or 2) then 1 else 0 end) as 'WorkStations'
這是正確的方式?
我的查詢是像below.I要選擇值如果TYPE = 1和亞型= 1,3或2在SQL Server中使用IN子句
select sum(case when Type = 1 and SubType in (1, 3 or 2) then 1 else 0 end) as 'WorkStations'
這是正確的方式?
既然你只是想獲得符合標準的,據我可以看到工作站的計數:
SELECT COUNT(*) AS Workstations FROM MyWorkStationTable WHERE Type = 1 AND SubType IN (1, 2, 3)
此外,IN子句本質上是已經是OR。這既不是有效的語法,也沒有必要說明它。
SELECT COUNT(*) [Workstations] FROM [YourTable] t WHERE t.Type = 1 AND t.SubType IN (1, 2, 3)
儘量避免IN
謂詞,而是使用加入,因爲它儘管一個事實,即只有一個/兩個賽不必要的迭代。我會用一個例子來解釋它。
假設我有兩個列表對象。
List 1 List 2
1 12
2 7
3 8
4 98
5 9
6 10
7 6
使用IN
,它會搜索每個列表-1項列表-2這意味着迭代會發生49倍!
如果您只是計算記錄,最好的辦法就是使用SQL Server提供的COUNT函數。考慮使用以下內容:
SELECT COUNT(*) FROM [Table] WHERE TYPE = 1
AND (SUBTYPE = 1
OR SUBTYPE = 2
OR SUBTYPE = 3)
最好避免使用'IN',因爲它可能會導致對SQL引擎的不必要的調用。
謝謝Jamie.I想要得到這個。工作站[#] - 通過計數用子類型工作站,平板電腦或筆記本電腦設置的硬件資產進行標識 – Indra 2012-07-16 16:43:08
應該優先使用「select count(PrimaryKeycolumn)」。 – 2012-07-16 16:50:56
@RGI好點。由於我不知道表格模式,爲了避免可能的混淆,我提供了*。 – JamieSee 2012-07-16 16:58:24