2014年6月22日 星期日

一秒看破 樞紐 查詢 SQL PIVOT UNPIVOT LINQ

什麼是樞紐?






......






DB

弄點假資料(手 KEY 就太傻太天真)

查出來這樣

但是 User 要這樣

硬幹吧 男孩 For~For~For~






多想兩分鐘,你可以不必自殺






官方有解 MS SQL 2005 + 都能玩

http://technet.microsoft.com/zh-tw/library/ms177410(v=sql.105).aspx

SELECT <非樞紐資料行>,

    [第一個樞紐資料行] AS <資料行名稱>,

    [第二個樞紐資料行] AS <資料行名稱>,

    ...

    [最後一個樞紐資料行] AS <資料行名稱>

FROM

    (<產生資料的 SELECT 查詢>)

    AS <來源查詢的別名>

PIVOT

(

    <彙總函式>(<要彙總的資料行>)

FOR

[<包含將變成資料行標頭之值的資料行>]

    IN ( [第一個樞紐資料行], [第二個樞紐資料行],

    ... [最後一個樞紐資料行])

) AS <樞紐分析表的別名>

<選擇性的 ORDER BY 子句>;






WTF...






看圖 (那堆 欄位沒法 直接用 SQL 搞 死心吧 只能靠 C# 組字串)

用 WITH 能略顯風騷???

沒了






等等...UNPIVOT 勒?






官網說 就是把 PIVOT 反過來






WTF...






有張反正規化的表

翻滾吧 Table

沒了






等等...LINQ 勒?






: P






http://abundantcode.com/how-to-create-pivot-data-using-linq-in-c/

http://linqlib.codeplex.com/wikipage?title=Pivot






2 則留言: