一個行轉列的應用
--> liangCK小樑 於2008-10-15<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
--> 生成測試資料: #T
IF OBJECT_ID('tempdb.dbo.#T') IS NOT NULL DROP TABLE #T
CREATE TABLE #T (id INT,姓名 VARCHAR(4),類別 VARCHAR(1),單位 VARCHAR(6))
INSERT INTO #T
SELECT 1,'張三','A','單位一' UNION ALL
SELECT 2,'張三','B','單位三' UNION ALL
SELECT 3,'張三','C','單位一' UNION ALL
SELECT 4,'李四','A','單位二' UNION ALL
SELECT 5,'李四','C','單位二' UNION ALL
SELECT 6,'王五','c','單位三' UNION ALL
SELECT 7,'王五','B','單位四'
--SQL查詢如下:
SELECT 姓名,
ISNULL(單位,(SELECT TOP 1 單位
FROM #T
WHERE 姓名=t.姓名
ORDER BY id DESC)),
A,B,C
FROM
(
SELECT 姓名,
MAX(CASE WHEN 類別='B' THEN 單位 END) 單位,
MAX(CASE WHEN 類別='A' THEN '有' ELSE '無' END) A,
MAX(CASE WHEN 類別='B' THEN '有' ELSE '無' END) B,
MAX(CASE WHEN 類別='C' THEN '有' ELSE '無' END) C
FROM #T
GROUP BY 姓名
) AS t
/*
姓名 A B C
---- ------ ---- ---- ----
李四 單位二 有 無 有
王五 單位四 無 有 有
張三 單位三 有 有 有
(3 行受影響)
*/
相關文章
- 行轉列的應用
- 一個使用snap的Web應用 (轉)Web
- 構建一個Flowable命令列應用命令列
- 用nodejs寫一個命令列應用-前言NodeJS命令列
- 一個金融應用專案的總結 (轉)
- 做一個自己的工作列 (轉)
- SQL 行轉列,列轉行SQL
- Mysql - 行轉列、列轉行MySql
- 寫了一個MySQL的行轉列的儲存過程薦MySql儲存過程
- oracle 11g的行轉列、列轉行Oracle
- sql的行轉列(PIVOT)與列轉行(UNPIVOT)SQL
- 一個Flask應用執行過程剖析Flask
- 字元陣列的幾個應用函式字元陣列函式
- 行轉列的一種優化思路優化
- Team Queue (佇列的一種應用)佇列
- XP Pro的工作列裡有兩個一樣的應用程式欄
- Shell的五個小應用(轉)
- Sender 的應用:所有Edit共用一個過濾格式 (轉)
- 多個 Laravel 應用 queue 佇列執行時會互串的問題Laravel佇列
- winform只允許一個應用程式執行ORM
- Oracle行轉列、列轉行的Sql語句總結OracleSQL
- 用nodejs寫一個命令列應用-package.json介紹NodeJS命令列PackageJSON
- 汽車行業的CRM應用(下) (轉)行業
- 汽車行業的CRM應用(中) (轉)行業
- 【轉】設計一個iOS應用的本地快取機制iOS快取
- hive經典案列--top N(行轉列\列轉行)Hive
- 用BCB寫一個最簡單的多執行緒 (轉)執行緒
- 一個debug應用程式出現執行時診測錯誤assert的問題 (轉)
- 將一個Collection轉為陣列陣列
- Win7工作列幾個應用的訣竅Win7
- 翻譯計劃 – 用 node.js 開發一個可互動的命令列應用Node.js命令列
- 翻譯計劃 - 用 node.js 開發一個可互動的命令列應用Node.js命令列
- 一個jboss的應用問題
- 行轉列計算差值的一種優化優化
- 一個簡單的iptable的應用
- rownum偽列的應用
- [譯] 如何使用 Node.js 構建一個命令列應用(CLI)Node.js命令列
- 微信搖一搖的一個有趣應用