首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 7.0 入門教學 (三):進階查詢技巧——排序、分組、聚合、聯結與 CASE 運算式

     編輯:關於SqlServer

資料排序:ORDER BY

ORDER BY column_list [ASC|DESC];預設 ASC。可指定欄位名或位置序號(非負整數)。

限制回傳筆數:TOP

SELECT TOP n [PERCENT] ... 依指定筆數或百分比限制結果集。

聚合函數總覽

函數用途語法重點
AVG平均值AVG([ALL|DISTINCT] expr);DISTINCT 忽略重複值
MIN/MAX最小/最大值字串型依排序規則比較;不可用於 image/text
SUM總和僅數值型;ALL|DISTINCT
COUNT計數COUNT(*) 含 NULL 列;COUNT(expr) 忽略 NULL

共同特性:除 COUNT(*) 外,皆忽略 NULL。

分組查詢:GROUP BY 與 HAVING

  • GROUP BY 依一或多欄位分組,每組產生一列彙總結果。
  • SELECT 清單僅能包含:常數、分組欄位、聚合運算式。
  • HAVING 於分組後過濾,可使用聚合函數;WHERE 於分組前過濾列,不可用聚合函數。
  • 不可對 text/image 欄位分組或 HAVING。

COMPUTE BY:明細與彙總並存

COMPUTE BY 產生兩種結果集:明細列(如 SELECT)與彙總列(如 GROUP BY)。若省略 BY,整張表視為單一群組。使用 BY 時,ORDER BY 必須包含所有分組欄位。

CUBE 與 ROLLUP:多維彙總

適用於交叉表報表。n 個分組欄位產生 2^n 種彙總組合,提供小計、總計等多層次統計。

多表聯結:JOIN 大全

類型語法 (ANSI-92)特性
CROSS JOINFROM t1 CROSS JOIN t2笛卡兒積,筆數 = t1 筆數 × t2 筆數,慎用
INNER JOINFROM t1 INNER JOIN t2 ON t1.col = t2.col最常用,僅回傳符合條件的配對列;NULL 不匹配
LEFT OUTER JOINFROM t1 LEFT OUTER JOIN t2 ON ...保留左表所有列,右表無配對則填 NULL
RIGHT OUTER JOINFROM t1 RIGHT OUTER JOIN t2 ON ...保留右表所有列
FULL OUTER JOINFROM t1 FULL OUTER JOIN t2 ON ...保留雙表所有列

別名:FROM table1 AS a, table2 AS b 簡化欄位引用。

CASE 運算式:條件式轉換

CASE [input_expr]
    WHEN when_expr THEN result_expr
    [ELSE else_expr]
END
  • 有 input_expr 時為簡單 CASE(等值比對);無則為搜尋 CASE(布林運算式)。
  • 範例:CASE state WHEN 'CA' THEN 'California' WHEN 'KS' THEN 'Kansas' END。

UNION:合併結果集

  • UNION 移除重複列;UNION ALL 保留重複。
  • 所有 SELECT 欄位數、型別必須相容。

GO 批次分隔符

GO 非 T-SQL 指令,為 osql/Query Analyzer 工具識別的批次結束標記,將多條陳述式送往伺服器一次執行。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved