SQL交叉表的实现时间:2021-10-10 04:49:56 问题的提出: 如何把以下形式 FItemID FName FStockID FDeptID FAuxQty ----------- -------- 337 生产部 598 327 1000.0 337 包装车间 624 605 1000.0 339 包装车间 598 605 200.0 . . . . . . 转为这个形式 FItemID 生产部 包装车间 FStockID ----------- -------- 337 1000 . 598 337 0 1000 . 624 339 0 200 . 598 从上面我们可以看出,得到的结果就是要实现一个交叉表,要解决以上问题,最简单的方法就是用CASE函数。让我们先来看看CASE函数的释义: CASE 函数是特殊的 Transact-SQL 表达式,它允许按列值显式可选值。数据中的更改是临时的,没有对数据进行永久更改。例如,CASE 函数可以在 state 列中有 CA 值的行的查询结果集内显示 California。 CASE 函数包含: CASE 关键字。 需要转换的列名称。 指定要搜索的表达式的 WHEN 子句和指定要替换它们的表达式的 THEN 子句。 END 关键字。 可选的、定义 CASE 函数别名的 AS 子句。 由此,我们得出以上问题的解法: SELECT FItemID, ( CASE FName WHEN ' 生产部 ' THEN FAuxQty ELSE 0 END ) AS ' 生产部 ' , ( CASE FName WHEN ' 包装车间 ' THEN FAuxQty ELSE 0 END ) AS ' 包装车间 ' , FStockID, FDeptID FROM testtable 以上只是个简单的示例,只要我们理解的CASE函数的正确用法,要写出复杂的交叉表,也是轻而易举的事了。 转载请注明作者:cnblogs(Bonny.wong) 2005.1.22