{"id":667,"date":"2010-10-01T08:42:19","date_gmt":"2010-10-01T08:42:19","guid":{"rendered":"http:\/\/enjoyasp.net\/?p=667"},"modified":"2011-07-28T04:40:09","modified_gmt":"2011-07-28T04:40:09","slug":"%e8%a1%8c%e5%8f%98%e5%88%97","status":"publish","type":"post","link":"https:\/\/enjoyasp.net\/index.php\/2010\/10\/01\/%e8%a1%8c%e5%8f%98%e5%88%97\/","title":{"rendered":"\u884c\u53d8\u5217"},"content":{"rendered":"<pre lang=\"tsql\">\r\n\u884c\u53d8\u5217\r\n\r\n    \u6ce8\uff1a\u8981\u53d8\u5217\u7684\u884c\u5355\u5143\u5bf9\u5e94\u7684\u6570\u636e\u987b\u552f\u4e00\uff0c\u6545\u5728\u4e0b\u9762\u7684\u5b50\u67e5\u8be2\u4e2d\u5148\u5bf9\u76ee\u6807\u884c\u5355\u5143\u8fdb\u884c\u4e86\u5206\u7ec4\uff0c\u4ee5\u4fdd\u8bc1\u552f\u4e00\u6027\u3002\r\n    1\uff0c\u7528case\u6307\u5b9a\u6761\u4ef6\r\n    SELECT f.UserName,\r\n    SUM(CASE CONVERT(VARCHAR(10),b.OrderDate,120) WHEN '2011-03-10' THEN b.Amount ELSE 0  END) AS '2011-03-10',\r\n    SUM(CASE CONVERT(VARCHAR(10),b.OrderDate,120) WHEN '2011-03-11' THEN b.Amount  ELSE 0 END) AS '2011-03-11',\r\n    SUM(CASE CONVERT(VARCHAR(10),b.OrderDate,120) WHEN '2011-03-12' THEN b.Amount  ELSE 0 END) AS '2011-03-12' \r\n    FROM bdAchievement a(NOLOCK)\r\n    JOIN bdOrder b(NOLOCK) ON a.OrderNo = b.OrderNo\r\n    JOIN frmuser f ON a.SalesStaff = f.Account\r\n    WHERE a.RootDepartmentID  = 184 AND b.OrderDate >='2011-03-10'\r\n    GROUP BY F.UserName\r\n\r\n    2\uff0c\u7528SQL SERVER2005\u63d0\u4f9b\u7684\u5173\u952e\u8bcdPIVOT\u6765\u6267\u884c\r\n    \u884c\u53d8\u5217\uff1a\u5c06\u591a\u884c\u7684\u503c\u5408\u5e76\u653e\u5230\u5217\u4e0a\u53bb\uff0c\u8fd9\u5c31\u9700\u8981\u4e00\u4e2a\u805a\u5408\u51fd\u6570\uff0c\u6b64\u5916\u8981\u6307\u5b9a\u62c6\u5206\u6210\u884c\uff08\u5217\u4e00\u884c\uff09\u7684\u5217\u5e76\u4e14\u6b64\u5217\u6309\u5982\u4f55\u89c4\u5219\u5206\u914d\u5230\u884c\u4e0a\u53bb\r\n    SELECT * FROM (\r\n    SELECT f.UserName,CONVERT(VARCHAR(10),OrderDate,120) orderdate,b.Amount \r\n    FROM bdAchievement a(NOLOCK)\r\n    JOIN bdOrder b(NOLOCK) ON a.OrderNo = b.OrderNo\r\n    JOIN frmuser f ON a.SalesStaff = f.Account\r\n    WHERE a.RootDepartmentID  = 3 AND b.OrderDate >='2010-02-10') O\r\n    PIVOT (SUM(amount) FOR orderdate IN([2011-03-10],[2011-03-11],[2011-03-12],[2011-03-13])) AS c\r\n    \u5c06\u5217\u8ba2\u5355\u65e5\u671f\u8f6c\u6362\u5230\u884c\u4e0a\u53bb\uff0c\u5206\u6210\u591a\u4e2a\u5217\uff0c\u89c4\u5219\u662f[2011-03-10],[2011-03-11],[2011-03-12],[2011-03-13])\uff0c\u5e76\u5bf9\u8981\u6c42\u7684amount\u6c42\u548c\r\n\r\n    \u540c\u6837\u5217\u53d8\u884c\u4e3a\uff1aUNPIVOT\r\n\u6ce8\uff1a\u5e94\u7528\u9650\u5236\uff0c\u5217\u62c6\u5206\u89c4\u5219\u662f\u6709\u9650\u7684\u51e0\u4e2a\uff0c\u5373\u884c\u540d\u662f\u53ef\u6307\u5b9a\u7684\uff0c\u82e5\u884c\u540d\u662f\u672a\u77e5\u6570\uff0c\u90a3\u67e5\u51fa\u7684\u6570\u636e\u5c06\u4e0d\u77e5\u653e\u5230\u54ea\u4e00\u5217\uff0c\u6545\u8fd9\u6837\u7684\u884c\u8f6c\u5217\u662f\u5219\u4e0d\u53ef\u6267\u884c\r\n\r\n\u6ce8: PIVOT \u4e0eCASE \u65b9\u6cd5\u7684\u533a\u522b\uff1aPIVOT\u7b80\u6d01\uff0c\u4f46\u53ea\u80fd\u5c06\u4e00\u4e2a\u5217\u7684\u5217\u503c\u8f6c\u4e3a\u5217\uff0c\u6ca1\u6709CASE\u7075\u6d3b\r\n\r\n\r\n3\uff0c\u5c06\u5217\u76f4\u63a5\u8f6c\u6210\u884c\r\n\u73b0\u6709\u4e00\u5ba2\u6237\u7535\u8bdd\u8868\uff0c\u5ba2\u6237\u7535\u8bdd\u6700\u591a4\u4e2a\uff0c\u8981\u6c42\u4ee5\u884c\u5f62\u5f0f\u663e\u793a\u51fa\u6765\r\n\r\nCREATE TABLE tmpTable(CustomerID INT,Tel VARCHAR(20))\r\n\r\nINSERT INTO tmpTable(CustomerID,Tel) VALUES(222,'13587654321')\r\nINSERT INTO tmpTable(CustomerID,Tel) VALUES(222,'13587654322')\r\nINSERT INTO tmpTable(CustomerID,Tel) VALUES(222,'13587654323')\r\nINSERT INTO tmpTable(CustomerID,Tel) VALUES(222,'13587654324')\r\nINSERT INTO tmpTable(CustomerID,Tel) VALUES(333,'13587654331')\r\nINSERT INTO tmpTable(CustomerID,Tel) VALUES(333,'13587654332')\r\nINSERT INTO tmpTable(CustomerID,Tel) VALUES(444,'13587654341')\r\nINSERT INTO tmpTable(CustomerID,Tel) VALUES(444,'13587654332')\r\nINSERT INTO tmpTable(CustomerID,Tel) VALUES(444,'13587654332')\r\n\r\nSELECT * FROM (\r\nSELECT customerid,tel, ROW_NUMBER () OVER ( PARTITION BY CustomerID ORDER BY  tel DESC )r\r\nFROM tmpTable tt)m\r\nPIVOT (max(tel) FOR r IN ([1],[2],[3],[4]) ) AS t\r\n\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u884c\u53d8\u5217 \u6ce8\uff1a\u8981\u53d8\u5217\u7684\u884c\u5355\u5143\u5bf9\u5e94\u7684\u6570\u636e\u987b\u552f\u4e00\uff0c\u6545\u5728\u4e0b\u9762\u7684\u5b50\u67e5\u8be2\u4e2d\u5148\u5bf9\u76ee\u6807\u884c\u5355\u5143\u8fdb\u884c\u4e86\u5206\u7ec4\uff0c\u4ee5\u4fdd\u8bc1\u552f\u4e00\u6027\u3002 1\uff0c\u7528 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36],"tags":[],"class_list":["post-667","post","type-post","status-publish","format-standard","hentry","category-sql-server"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/posts\/667","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/comments?post=667"}],"version-history":[{"count":0,"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/posts\/667\/revisions"}],"wp:attachment":[{"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/media?parent=667"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/categories?post=667"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/tags?post=667"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}