SQL Server 2008 R2——PIVOT 行转列 以及聚合函数的选择
==================================声明==================================
本文原创,转载在正文中显要的注明作者和出处,并保证文章的完整性。
未经作者同意请勿修改(包括本声明),保留法律追究的权利。
未经作者同意请勿用于学术性引用。
未经作者同意请勿用于商业出版、商业印刷、商业引用。
本文不定期修正完善,为保证内容正确,建议移步原文处阅读。
本文链接:http://www.cnblogs.com/wlsandwho/p/4423956.html
=======================================================================
看了好长时间的资料,总算是看懂了点。(另外怎样才能把右面的这个长毛的土豆去掉?----> 对,就是它!)
赶紧记录下来。
=======================================================================
表格和数据。(和http://www.cnblogs.com/wlsandwho/p/4416222.html的相同)
USE tempdb
GO
--------------------------------------------------------------------------
IF OBJECT_ID('Student','U') IS NOT NULL
DROP TABLE Student
GO CREATE TABLE Student
(
StuID NVARCHAR(8) PRIMARY KEY,
Name NVARCHAR(5),
EntranceTime DATETIME
)
GO INSERT INTO Student(StuID,Name,EntranceTime) VALUES('','Lily','2008-08-27')
INSERT INTO Student(StuID,Name,EntranceTime) VALUES('','Lucy','2009-08-26')
INSERT INTO Student(StuID,Name,EntranceTime) VALUES('','Jack','2007-08-28')
GO
--------------------------------------------------------------------------
IF OBJECT_ID('SltCourse','U') IS NOT NULL
DROP TABLE SltCourse
GO CREATE TABLE SltCourse --SelectiveCourse
(
ID INT PRIMARY KEY IDENTITY(1,1),
StuID NVARCHAR(8),
CourseName NVARCHAR(10),
Score INT
)
GO INSERT INTO SltCourse(StuID,CourseName,Score) VALUES('','电脑维修',90)
INSERT INTO SltCourse(StuID,CourseName,Score) VALUES('','剪纸',80)
INSERT INTO SltCourse(StuID,CourseName,Score) VALUES('','市场策划',95)
INSERT INTO SltCourse(StuID,CourseName,Score) VALUES('','信息检索',100) INSERT INTO SltCourse(StuID,CourseName,Score) VALUES('','插花',99)
INSERT INTO SltCourse(StuID,CourseName,Score) VALUES('','剪纸',96)
INSERT INTO SltCourse(StuID,CourseName,Score) VALUES('','刺绣',92) INSERT INTO SltCourse(StuID,CourseName,Score) VALUES('','插花',98)
GO
查看一下
SELECT s.StuID,s.Name,s.EntranceTime,sc.CourseName,sc.Score FROM Student s,SltCourse sc WHERE s.stuid=sc.stuid
GO
=======================================================================
现在来看这个表格,前三列有很多数据是重复的,而且也不便于阅读。之前使用了row_number函数,这里使用下别的——PIVOT来实现一个行转列。
预期效果。
=======================================================================
静态版。这需要预知要转换成列名的数据。
WITH ReportCard
AS(
SELECT s.StuID,s.Name,s.EntranceTime,sc.CourseName,sc.Score FROM Student s,SltCourse sc WHERE s.stuid=sc.stuid
)
SELECT * FROM ReportCard PIVOT(MAX(Score) FOR CourseName IN([电脑维修],[剪纸],[市场策划],[信息检索],[插花],[刺绣]) ) AS T
GO
结果。
aaarticlea/png;base64,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" alt="" />
当在第三行加上筛选语句时,可以得到指定的某一行。例如:
WITH ReportCard
AS(
SELECT s.StuID,s.Name,s.EntranceTime,sc.CourseName,sc.Score FROM Student s,SltCourse sc WHERE s.stuid=sc.stuid AND s.StuID=''
)
SELECT * FROM ReportCard PIVOT(MAX(Score) FOR CourseName IN([电脑维修],[剪纸],[市场策划],[信息检索],[插花],[刺绣]) ) AS T
GO
结果。
aaarticlea/png;base64,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" alt="" />
=======================================================================
动态版。先查询出要转为列的行数据,然后设置格式,再拼接字符串。
DECLARE @strCN NVARCHAR(100)
SELECT @strCN=ISNULL(@strCN+',','')+ QUOTENAME(CourseName) FROM SltCourse GROUP BY CourseName
--PRINT @DCN DECLARE @SqlStr NVARCHAR(1000)
SET @SqlStr='
WITH ReportCard
AS(
SELECT s.StuID,s.Name,s.EntranceTime,sc.CourseName,sc.Score FROM Student s,SltCourse sc WHERE s.stuid=sc.stuid
)
SELECT * FROM ReportCard PIVOT(MAX(Score) FOR CourseName IN('+@strCN+') ) AS T'
EXEC(@sqlstr)
GO
=======================================================================
题外话,关于PIVOT中聚合函数的使用。
我刚用TSQL不久,行转列都是汇总一些数值类型的数据,比方说,周一到周日的营业收入啦,数理化史地生成绩啦之类的。
这些数值类型的,选择聚合函数时,当然是需要什么选什么啦。
看例子。
USE tempdb
GO IF OBJECT_ID('AggregateFuncTest1','U') IS NOT NULL
DROP TABLE AggregateFuncTest1
GO CREATE TABLE AggregateFuncTest1
(
ID INT IDENTITY(1,1) PRIMARY KEY,
DayOfWeek NVARCHAR(3),
Income INT
)
GO INSERT INTO AggregateFuncTest1(DayOfWeek,Income) VALUES('星期一',100)
INSERT INTO AggregateFuncTest1(DayOfWeek,Income) VALUES('星期二',200)
INSERT INTO AggregateFuncTest1(DayOfWeek,Income) VALUES('星期三',300)
INSERT INTO AggregateFuncTest1(DayOfWeek,Income) VALUES('星期四',400)
INSERT INTO AggregateFuncTest1(DayOfWeek,Income) VALUES('星期五',500)
INSERT INTO AggregateFuncTest1(DayOfWeek,Income) VALUES('星期六',600)
INSERT INTO AggregateFuncTest1(DayOfWeek,Income) VALUES('星期日',700)
GO
----------------------------------------------------------------------
SELECT DayOfWeek,Income FROM AggregateFuncTest1
GO
----------------------------------------------------------------------
WITH Rst AS
(
SELECT DayOfWeek,Income FROM AggregateFuncTest1
)
SELECT [星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日] FROM Rst
PIVOT(AVG(Income) FOR DayOfWeek IN ([星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日])) AS T
GO
----------------------------------------------------------------------
INSERT INTO AggregateFuncTest1(DayOfWeek,Income) VALUES('星期一',1000)
GO WITH Rst AS
(
SELECT DayOfWeek,Income FROM AggregateFuncTest1
)
SELECT [星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日] FROM Rst
PIVOT(AVG(Income) FOR DayOfWeek IN ([星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日])) AS T
GO
----------------------------------------------------------------------
DROP TABLE AggregateFuncTest1
结果:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYMAAAEpCAIAAAD+gdnNAAAezUlEQVR4nO2dzW7bSLqG6246jJZa9UUEjVDQena6ggYaPbIBbQNkmwBCA4302HIAHZxNzg24F72JZXvOQDMZzIGnO510OuNOENmxLVk/0FlQpIqsHxZFFuuj/D4oGOUyWXyryHrzkaK+sBEAALiGPXr8pKLF9dQBAAqDPXr8ZFlB4EQAbBMVdiL6xfXJBaAyVNiJ5rSBEwFgjs6JWt2BtNRbyVKmBwU8evzkMs7h4eHh4eGLOM+e7V+6AE4EQCZSnKg7WK5Kd9lSFL0TMcY0vxboRN1uUsb5+Xmr24UTAUCfbDGRGA3VW4N6PZcTMTV6J7qIEznRxcXF4MNy8GF58HLUanUvXDCbzeBEAJijcyI+yjg6Oorqh4eHQWUymXS7g3q9lWpDGqPhHUdVlzpRYiSB2levXg0Gg6Ojo4OXo2530Gp1c80OYxv8aTQawYkAyISpE0Xus1wuX7x4EdhQEIl8+eWXqTak8ZeNY6JPcbrdQXcwePHiRbc7ePZsPyitVveTMYwxk4oKvis4EQCZ0DnRs2f7r169Ojo6OowTrPbgebDeiURDkTpRal3qRB/jiM+JDl6OVsHRYNAdDM7Ozj6mwRjjK/zPxAaqHQOm0ymcCABzUpwoqvMxUbc7CJ6GDD4snz3bVzlRwlBU8c7GMdGHON3u4M2bN+fn5+fn54PB8uDl6ODliNdcr7fOzs4+ZIExJrao4DeDEwGQicx3Z5PJ5MWLF9FTYb0T6d0kz/aPHj/5I063Ozg7O4sFboNBMIxlt9XtDo6OjgIz+kMGY4yvi4ibqXb/448/4EQAZELnRE+fPh0MBsHCjh7BBD+jZzHdbjf17izwF2m8owkx9GHRo8dPzuKId2crJ1oul8vl2dlZvdWq11uBGUlhjCUq0j+p4Le/ubmBEwFgTooTrVd1dxA8or64uHj2bH/wYRncAT19+lTz2VnCmKR1voX/qefR4yf/FydwoiBYOz8/H3wInajbWrZay+Wy1a13u4N6q/V/aUiNJvqTahf+VzgRAJkwdaLgjix6NhQ9iEl1Ij4mUjkREz5lSzWjR4+f/CtO5ESBDQ0+xO4uLy4uzs7OuoNBvd76VxqMMVWLJibit4cTAZCJFCeKPinj78iCj8yehqicKHF7Jb3tErdR7S460T/jBL4T2dBgEDpRq7Vs1d+8edPq1gMn+qcaxljwU0S1sZTr62s4EQDmpDjRl19+Wa+3Ej/5SoCqh4QxSeuqbfQ8evzkH3FiTjRYtgb16LO/8/PzV69eHR4eBp+g/UMBYyxRUf1J3DKxC5wIgExU+Lv4wzjBp2PB+41BWTlRq75s1Y+OjuqteuBEQxmMMWk90RJUEhuIjVdXV3AiAMypsBP9LU7wNPpPf/pTvdUKSuBEqzcbw7vLer31tzQYY4lfgxa+PXHvlvgrnAiATFTYif43jcB3xJK6Y34+f/4MJwLAnAo70Slh4EQAZKLCToSCgrI1papOBADYJmJO9F///T8oKCgo5ZekE1m1vcvLS6v9O4Tm0GiqAkAETlQMNIdGUxUAIqU60cXFhdX+HUJzaDRVASACJyoGmkOjqQoAEddONOzUuDeVm/0s3fWb4X61zjDW1uwPO7V1b8NOjeu73zQ80LBTW3ecgnxoxrtbAk4EqkKpTjQajZJNseUas48UeD8ZdmorM+o3w0au42GnVqvxvxkeJIuVpA3NDRJVAJCkVCf69OlTsimxXE1Xr7BdYEF8c78Zhkr9Zq3Tj/6yNqvMB9GQPjQXSFQBQJKkE81m8/FkaqPM54vf3/8n2f/pruftnqxbnvus0ZtMe431LZvfm/YajDWeB9v0GsxrNDzW6CX6We8R/GnV1bjXYI3n49Ndr/F8PJme7Nz3dv4a3+X+zulU0rLW9txnjMV0Gg/tdNfzdnca67GMow75lvWhG73Vvg3fY4wxb+f5zqqikK1V5fDaAsCcpBNNZ/Ob8a2NMp8vfnv3e7L/k13P2z1et5y2vfvtE2GDk12PNfbHtzfjA5819pN7SdtXXR3v3Pd7tzfjA9/bPV73zx1otZfQsmo/8FlcUqahnex6jPm9xIHCllXn65bjnfvMP7g52fWCg/IVqcg0VQ6vLQDMKc+JFovF29/epTnRgR84zgkX43i7x+PbfZ/5vdubXiNcqIExcf0IDnW8c9/vJaxH1j9jjN1v99Qt/sHmQ+MliS3iJCS2SVRE2WqLDFQ5vLYAMEdwouns+mZio8wXizdv3yX7P97xvJ1B8teez7z2cXyD/Qbze3t+0H7a9sINgrLfYH4v2dt+g/kNP2wZtD2/veP5vVW3rLGXUCJvOW17zN/fdGi8JLFFnITENomKKDJNlcNrCwBzSDlRtOZ7frTe9htstUHPZ4xFG+83WLTN8Y4XOFdykfd8xlhgPatdmNc+jR9L5jhBC+8C2vWfzYli1hZ47rpl0PZilpqsiLLhRGAbSDrR7XR2dT22Uebzxetf3yb7H+zwtxsP91btR22u2ds5uh5fXY/3fOa1T9b77kWPfb0/D8Lewo2vrsdX1yd/9vhdeg+jLVe/xndPtHC9HbU9FtvXbGjezhEvaV2PDhQOOZqHYINoS7Eika1T5fDaAsCcpBNNbqefr25slPl88cvrNzn633/I/L/Y0eZ6aBZVOby2ADBHcKLJ9PLztY0yn89//uXXDfv/i88Yu/fngSVtLodmWZXDawsAc5JONJ7cXlxe2Siz+fzfP7+217/DQnNogSqH1xYA5iSd6O9gu3B4bQFgjviOtUWm06nV/h1Cc2jT6dThtQWAOUknsp7Bn7Et/kkNhxcWAJmQOJG9g41Go/cfL7eyEFz2BCUBoKJsJ2KMOXcNG4UxZm/eNgNOBCoEYqJiCsFlT1ASACqoxERMDb9NokKnICYCIA/mTmSeYUyJJibSOJTGiaSGRTImis3eOu1t2Ca25AdOBCqEiRNFuaYLcKKNYyJpO50oSR0TCbO3zuUY1sSWIoATgQpR+ZiIiBNliInEqvyPeYETgQohcSJFAtkwGWuOkv85kSZQohoTBUhT/a/qYkshpxZOBCqExIkUaRvDbIc5iuFnZ6nxUaVjIjgRACJlO1GmuzBxGzEm4iuawMp23ISYCIA8yJxInraRy6O4adE/JzK5OxMrRO7O8JwIgDyU7URSy0g0qrYRHYrO3Zl5TITPzgAQkTiRIoFs7yHz9/IlkNU/J9rgfoqOE+F9IgDyIHEie1lQDb93ptpGendGxInSYiIHwIlAhZA5kbUsqKqYSP+YOXEjxu8i1qnGRA4gKAkAFRInspcFFd/FLxM4EagQEieyl8kU38UvE4KSAFAhfcfaFoiJygROBCpE2dljR64TvNr7SRCHFxYAmSg7P5G9zt1CcGgEJQGgAk5UDASHRlASACrgRMVAcGgEJQGggooTaV4m4rdJVOhAcNkTlASACiMnKuq7CHonSm0XnUhqWE7QDM3kux34tge446Q70bBT4xJa5FopeWIiabvem1SxlQ1UQ5PMHr4BC4BAtruznAvFRkyk3700TJb9avaQFQQAAfPssdPx5K87HvN7ubLHKnUYxDL6QMneHJlgsOxXMREypQEgYp6z8fZ45z7zdo/z5Ww00pQWH1UxJhp2aixxKwYnAiDE1Iny25DeiaR3YeI2Ykyk36U0Uu9qWWgwcCIARIxyNg7aHvN2BvkSNgY5G5U6zO7OxAr9uzPehpZLZI8FQIKBE+03WO68sXonSviI1FakDlWBmKjfTH4yj8/OABBIzx6758fWv9c+yZM9VidFGxCpdklUXKEa2vpFIcYYW8VGeJ8IgARlZ4810rTpE2vNLZ7tOziCy56gJABUlJ09Vi7CwEGYcAfH4k+LrE2REQSXPUFJAKgoO3usw6FaheDQCEoCQEXZ2WMdDtUqBIdGUBIAKsrOHutwqFYhODSCkgBQ4SB7LCgNhxcWAJmgkp+o6hAcGkFJAKiAExUDwaERlASACjhRMRAcGkFJAKig4kQmryPSeaNahOCyJygJABXZssfm/CqC3olS26WvVicMy8kL1kuz7LHR7OHbHgAkMHCifjP8KnneL4rniYmk7XSiJOXQxNnDN2ABEMh0d5Z3ndiIifS7l4bBsg9nD1lBABDIkj32dNdjjd6mqWPvevZYMaE+MqUBEJIlZyNjfs9WzsaYpq3LHjvs1KJHQHAiAEQy5LG+GZ+2vVxmZHh3pnEiMSaS7q4JrCxhdneGjPoAyDHKHsunkfXap8geK2Ky7PG/DAGgIt2JBm2P+b3rm8n1zWnbY/4+ssdKUA0N//MiACakZ4/lE8jmSR17N7PHLrl3hSKPwftEACTYquyxDiG47AlKAkDFVmWPNenHEgSXPUFJAKhA9thiIDg0gpIAUIHsscVAcGgEJQGgAtlji4Hg0AhKAkAFssduMw4vLAAyQSU/UdUhODSCkgBQAScqBoJDIygJABVwomIgODSCkgBQQcWJTF4CovMeowjBZU9QEgAqMjjROvvgpuidKLVd+mp1wrDIvtnIzx6+7QFAAmMnGnZqzK4T6e1D2i71ptSKDVKWPT97+AYsAAKGTjTs1GrNZt5VYiMm2qBiA+2yj88esoIAIGCWPbbXYI3nJzv3vZ2/bpw6tpzssRSdqN9kzX4U7SBTGgAiJjkbD3zW2B/fHu/c93ZOiWePpedEqygHTgSAhnQnigzIqhNJ78LEbTaIgNw6kWhAcCIARFJzNp62vdi9EvHssUydQsSFEwWp9NcgeywAUjLksc6ZxLqc7LEax3H2nGi5XMo/H8NnZwCsMMoeG5Sjtkc/e6xmFypOhPeJABDYtuyxmrs8t05UPgQlAaBiq7LHipsldsk5WRoILnuCkgBQgeyxxUBwaAQlAaAC2WOLgeDQCEoCQAWyxxYDwaERlASACmSP3WYcXlgAZIJKfqKqQ3BoBCUBoAJOVAwEh0ZQEgAq4ETFQHBoBCUBoIKKE5m8jmjy0pArCC57gpIAUGHiROuvIuTM2qh3otR2/RvVS3cvWC9TsoIkZw/f9gAggaETFbM+8sRE0nZNlFRy3KR1ovjs4RuwAAgYOFFxq8NGTKTanYoTibOHrCAACBhkjz3djTIU0c8ey29c6ESloHOi+L0ZMqUBIGKQPbbXYN7u8fj2Znza9pjfo549Vm9nllAObf2/Cw07Ndbsw4kAkGCSx1qSSZZs9liTX21gsuxVvgMnAiBDzsb8aRsL/xRfFfVQdiI8JwJAJN2JBm2P+b3rm8n1Tc9nXvuYdPZY8w6LRTW01S3Zcrm+T8NnZwAIGGWP3fNXi59+9tilzHfcxkTRu0LIHguAim3LHivdncjdWckQlASAiq3KHmvSjyUILnuCkgBQgeyxxUBwaAQlAaAC2WOLgeDQCEoCQAWyxxYDwaERlASACmSP3WYcXlgAZIJKfqKqQ3BoBCUBoAJOVAwEh0ZQEgAq4ETFQHBoBCUBoIKKE5m8BCR9j1HTYX7B5hBc9gQlAaDCzImiLyPk+y6C3olS26WvVmveWizTjHTLXpg9fNsDgASmeayDBbJOtrMReWIiabs+SqLhRMLs4RuwAAgYOFFO++GwERPpdy8N5dDE2UNWEAAE0rPHnuzcZ43neZLGlpY9VtNJoqvCUQ2NywqybkGmNAASpOdsPN657/mNVSpr/2DjhI3lZI91hcaJas3mKpV1s7+EEwEgw8iJSshjLb0LE7cRYyLpLia9FYsuJkIeawDSMMgeu9+IMsYie6wKzXOipMvgOREAAiZ5rHs+a+zdTK5vTtse8/epZ49V7Z59cjKg/ews8JbwkRE+OwNAwCh77FWUPtbvVTF7rKqxQPA+EQB52LbssRrHsWpGBJc9QUkAqNi27LG6ocKJAKAKsscWA8GhEZQEgApkjy0GgkMjKAkAFcgeWwwEh0ZQEgAqkD12m3F4YQGQCSr5iaoOwaERlASACjhRMRAcGkFJAKiAExUDwaERlASACipOpH+ZKNomUaEDwWVPUBIAKtKdaNipxZ1h8+8j6J0otV36RnXCsEwczQaqoUlnD9/2ACBBxpho2KnlWCp5YiJpu9SbVP1vLNsEo2UfzB6+AQuAQDYn4lJcbIKNmEhVMey/KEyW/Wr2kBUEAIH07LHrcrrrebsnhLPHLik7kRgAIVMaACHpORv55I15EjaWkz3WxNFskDq06L4WTgSAiLkTHfissZ/DhsrJHks1JlrfdcGJABAxydlYQN7Y0rLH0nSimL/gOREAAoZOdNr2vPZxLhsqJ3ssSSeKBzr47AwAAePssfnyxpaWPZaiEwlxDt4nAiDBFmaPTb3LswHBZU9QEgAqtip7rLgZv33+ydJAcNkTlASACmSPLQaCQyMoCQAVyB5bDASHRlASACqQPbYYCA6NoCQAVCB77Nbi8KoCICtJJ3IoBQBwZ4ETAQDcAycCALgHTgQAcA+cCADgHjgRAMA9cCIAgHvgRAAA98CJAADuSToRCgoKSvkl5kSuv58AALijwIkAAO6BEwEA3IPnRCgoKO5LqZ+dXV5eWu1/MwiqgiQTIMkEgpKWMlVwIoqqIMkESDKBoKSlcye6uLiw2v9mEFQFSSZAkgkEJS1lqtw7kcn/C5T6X3dsmSpIgiQNmWQTnCWpKhJOJN1YPynSudsaVVYlmVyFdCRpVNmTtJkeq5IM+yxZ0mazJFVVqhONZMmVUwcjbReniaaqzU4VwYmyPUuplZIl8R1qJ8aBpEyqyjlxWeWJqkp1ok+fPomNJoPRTEGmC6Uqqu6apM1klzNLmebtzp44w/41qpJONJvNx5OpjTKfL35//x+xf409S7dRtWyNqjsoyaTiapbM582qJE0nUtkln7hMkxaoSnGi6Wx+M761UebzxW/vftf3zxjTt2sqW6PqDkraQHYJkqTgxJnMkslEOXOixWLx9rd3Yv+8aM2kJEaYqGhmRD8vVlURnCjNBeRQkknFyYnT/+pcUuplVtqJ0/SvUpXmRNPZ9c3ERpkvFm/evhP7l66KAH4bsSJuth2q7qCkoJJQqJddzizpf4Uk1dFNVNFyIpNplU5W6lxUV9UdlCSuN323pc2SSYdlSlLt7vDEZTprvKoUJ7qdzq6uxzbKfL54/etbaf/isBlj+t6iDVK3rJyqOyhJs4vqTyXMkriXvh8nkvSqXJ04k4lKcaLJ7fTz1Y2NMp8vfnn9Rt8/Y0zfrqkQVCU92TxVmSjbkmjOkri7fg5LmKWs3To8cakTleZEk+nl52sbZT6f//zLr4n+U9dqsI24i1jfGlVWJZn0U/4saabLiSSCs6SZIlezpDmuXm2gKsWJxpPbi8srG2U2n//759f2+t8aVZAESVssKVKV4kR/BwAA+6Q40cwm0+nUav+bQVAVJJkASSYQlDSbzabTaYoTWc9WyxjBnwCAMlkKSJxI3KgoRqPR+4+X1AqzkH4lJ1bPwmZAkgmQZAIJJ2KMObeeRKnKqXILJJkASSaQcCLnvoOYaDMgyQRIMoGEEyEmMgGSTIAkE6oiydyJ+k3W7OdWoDWFHx6wh9+Fv373Vfii1Vc/qFpsx0T9ZnjEcOgmLfnRXD3R4aKjOZcUHbTWGdKQtD4aC0W5liQ5c24lDTs1FqPZdyrJxIkizQU4kSImevn1veAQoRP99O0X9779cfWne1//JGuxHBMNO7VwxGF12KmtLuywJrYUgfKCXi/38B8G55IChp1atOjdSxL+1SQhaaVpdQ7dS+IYdmrNvltJVGOi7x/yodCD72Ut9mOiiNV54OZgVRVbisDg6gmvDBKShp1ardmsJUzSmSRx1TiXxEeMRCTFtLi/liROpEgg+9xnjd6m6UeDkvacaO1EP35z74tvXr7n6mKL7ZiIYxUT8Vd4UBdb7J0qmSIakvpN1uxHx3IvibvxICKJi6/XLe5PXPxgbiVJnEiRtvHAZ419bYK41GIeE5XpRKkx0bBTYwROVUxPGOoTkLT6x5KQE60DECr/hKyCRu4hh3NJvDYK11LZTlS5mCiyIeenStRFZY3FDci5JFGec0ncVUTlxIWs77roOZE8bWPPZ429TZP+BaVyz4l4G1ouad3b03h0lfwEhoCkpD4SklZPYihJ4sUIRyXxnMiqExnGRBQ+O+M+7ghx/XnHkODHeZw2Ip+dcbMU3qe5lsQtZFInLn4gp5IkTqRIINt7yPw9bXLJ1FKt94n4l1KiZ5/OX0uJDhddF84lBfCXqnNJFGeJ2PtEq+PFD0TrfSJ7CWTxjrUhkGQCJJlQFUkyJ7KWQBbfOzOkKlePWyDJhKpIkjiRvVyTiIkMgSQTIMmEqkiSOJG9fJGIiQypytXjFkgyoSqSpO9Y2wIxkSGQZAIkmVAVSWVnjx25ThSr+gkAKAepPSWdqHD/AwCAVOBEAAD3wIkAAO6BEwEA3AMnAgC4B04EAHAPnAgA4B44EQDAPXAiAIB7kk6EgoKCUn6JOZHrt8ABAHcUOBEAwD1wIgCAe/CcCAUFxX0p9bOzy8tLq/1vBkFVkGQCJJlAUNJSpgpORFEVJJkASSYQlLR07kQXFxdW+98MgqogyQRIMoGgpKVMlXsnYmr4bRKV7VYFSZCkIZNsgrMkVUXCiaQb6ydFOndbo8qqJJOrkI4kjSp7kjbTY1WSYZ8lS9pslqSqSnWikTSTdtpgpO3iNNFUtdmpIjhRtmcptVKyJL5D7cQ4kJRJVTknLqs8UVWpTvTp0yex0WQwminIdKFURdVdk7SZ7HJmKdO83dkTZ9i/RlXSiWaz+XgytVHm88Xv7/8j9q+xZ+k2qpatUXUHJZlUXM2S+bxZlaTpRCq75BOXadICVSlONJ3Nb8a3Nsp8vvjt3e/6/hlj+nZNZWtU3UFJG8guQZIUnDiTWTKZKGdOtFgs3v72TuyfF62ZlMQIExXNjOjnxaoqghOluYAcSjKpODlx+l+dS0q9zEo7cZr+VarSnGg6u76Z2CjzxeLN23di/9JVEcBvI1bEzbZD1R2UFFQSCvWyy5kl/a+QpDq6iSpaTmQyrdLJSp2L6qq6g5LE9abvtrRZMumwTEmq3R2euExnjVeV4kS309nV9dhGmc8Xr399K+1fHDZjTN9btEHqlpVTdQclaXZR/amEWRL30vfjRJJelasTZzJRKU40uZ1+vrqxUebzxS+v3+j7Z4zp2zUVgqqkJ5unKhNlWxLNWRJ3189hCbOUtVuHJy51otKcaDK9/Hxto8zn859/+TXRf+paDbYRdxHrW6PKqiSTfsqfJc10OZFEcJY0U+RqljTH1asNVKU40Xhye3F5ZaPM5vN///zaXv9bowqSIGmLJUWqUpzo7wAAYJ8UJ5rZZDqdWu1/MwiqgiQTIMkEgpJms9l0Ok1xIuvZahkj+BMAUCZLAYkTiRsVxWg0ev/xklphFtKv5MTqWdgMSDIBkkwg4USMMefWkyhVOVVugSQTIMkEEk7k3HcQE20GJJkASSaQcCLERCZAkgmQZEJVJJk7Ub/Jmv3cChR28MOD9XtV977+Sdpy+d1XYcNXP5QTE/Wb4RHDoZu05Edz9USHi47mXFJ00FpnSEPS+mgsFOVakuTMuZU07NRYjGbfqSQTJ4o0F+BETB4T/fCAPfxO3/LTt1/c+/bHj5fvP778+t7Km6zGRMNOLRxxWB12aqsLO6yJLUWgvKDXyz38h8G5pIBhpxYteveShH81SUhaaVqdQ/eSOIadWrPvVhKNmGjtMuqW7x9GodB3X7EH35cRE0WszgM3B6uq2FIEBldPeGWQkDTs1GrNZi1hks4kiavGuSQ+YiQiKabF/bUkcSJFAtnnPmv0Nk0/GhRlTPTTt1+EMeAX37yUtvz4zb3Vn+J1ezERxyom4q/woC622DtVMkU0JPWbrNmPjuVeEnfjQUQSF1+vW9yfuPjB3EqSOJEibeOBzxr72gRxqUUZE33/kK3vvNiD7yUt9pwoNSYadmqMwKmK6QlDfQKSVv9YEnKidQBC5Z+QVdDIPeRwLonXRuFaKtuJFM+J1kV0maDFVUwU2ZDzUyXqorLG4gbkXJIoz7kk7iqicuJC1ndd9JxInrax57PG3qZJ/4Ji8j6RyomcPCfibWi5pHVvT+PRVfITGAKSkvpISFo9iaEkiRcjHJXEcyKrTiSNiX785l7oMj88YPe+/knSUv5nZ9zHHSGuP+8YEvw4j9NG5LMzbpbC+zTXkriFTOrExQ/kVJLEiRQJZHsPmb+nTS6ZWjQxUfSuUBQQaVrKeZ+Ifyklevbp/LWU6HDRdeFcUgB/qTqXRHGWiL1PtDpe/EC03ieyl0AW71gbAkkmQJIJVZEkcyJrCWTxvTNDqnL1uAWSTKiKJIkT2cs1iZjIEEgyAZJMqIokiRPZyxeJmMiQqlw9boEkE6oiSfqOtS0QExkCSSZAkglVkVR29tiR60Sxqp8AgHKQ2lPSiQr3PwAASAVOBABwD5wIAOAeOBEAwD1wIgCAe+BEAAD3wIkAAO6BEwEA3AMnAgC4B04EAHBP0olQUFBQyi8xJ3L9fRQAwB0FTgQAcA+cCADgnpgTAQCAE+BEAAD3/D/+88gN457S7AAAAABJRU5ErkJggg==" alt="" />
只要看一看、运行一下就会发现,聚合函数的选择是根据需要来的。当我有2个星期一的入账时,由AVG函数的来的结果是不同的。
那么,求最大就是用Max,最小用Min,求和就是Sum,等等等等。没啥说的。
如果数据是字符类型呢?
再看例子。例如,办公室值日表。
USE tempdb
GO IF OBJECT_ID('AggregateFuncTest2','U') IS NOT NULL
DROP TABLE AggregateFuncTest2
GO CREATE TABLE AggregateFuncTest2
(
ID INT IDENTITY(1,1) PRIMARY KEY,
DayOfWeek NVARCHAR(3),
Name NVARCHAR(10)
)
GO INSERT INTO AggregateFuncTest2(DayOfWeek,Name) VALUES('星期一','Jack')
INSERT INTO AggregateFuncTest2(DayOfWeek,Name) VALUES('星期二','Lucy')
INSERT INTO AggregateFuncTest2(DayOfWeek,Name) VALUES('星期三','Lily')
INSERT INTO AggregateFuncTest2(DayOfWeek,Name) VALUES('星期四','Bob')
INSERT INTO AggregateFuncTest2(DayOfWeek,Name) VALUES('星期五','Angela')
INSERT INTO AggregateFuncTest2(DayOfWeek,Name) VALUES('星期六','Bella')
INSERT INTO AggregateFuncTest2(DayOfWeek,Name) VALUES('星期日','')
GO
------------------------------------------------------------------------
SELECT DayOfWeek,Name FROM AggregateFuncTest2
GO WITH Rst AS
(SELECT DayOfWeek,Name FROM AggregateFuncTest2)
SELECT * FROM Rst PIVOT (MAX(Name) FOR DayOfWeek IN ([星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日]) ) AS PVT
------------------------------------------------------------------------
DROP TABLE AggregateFuncTest2
结果:
aaarticlea/png;base64,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" alt="" />
单个的数据可以用Max等函数来凑合使用,因为这些函数可以接受字符类型的参数。
但如果数据多了,不止一个的时候呢?例如,又来了一个同事,于是周六多了一个人,那就顺便大扫除吧。
INSERT INTO AggregateFuncTest2(DayOfWeek,Name) VALUES('星期六','Alice')
GO
WITH Rst AS
(SELECT DayOfWeek,Name FROM AggregateFuncTest2)
SELECT * FROM Rst PIVOT (MAX(Name) FOR DayOfWeek IN ([星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日]) ) AS PVT
GO
结果:
aaarticlea/png;base64,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" alt="" />
Alice居然不用值日,这怎么行!怎能不给表现的机会?女汉子能顶一个天!
这种情况只能自己专门写一个聚合函数来拼接字符串了。(当然可以先拼接好字符串,再行转列。)
=======================================================================
用户自定义聚合函数好复杂,不写了。(其实是我还没搞懂这些呢,C#无爱。)
SQL Server 2008 R2——PIVOT 行转列 以及聚合函数的选择的更多相关文章
- SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行
ylbtech-SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行 可以使用 PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表.PIVOT 通过将表达式某一列 ...
- SQL Server中使用PIVOT行转列
使用PIVOT行转列 1.建表及插入数据 USE [AdventureDB] GO /****** Object: Table [dbo].[Score] Script Date: 11/25/201 ...
- sql server 2008 数据的行转列
create table tb(id int, value varchar(10)) insert into tb values(1,'aa') insert into tb values(1,'bb ...
- SQL Server 2008 R2——使用计算列为表创建自定义的自增列
=================================版权声明================================= 版权声明:原创文章 谢绝转载 请通过右侧公告中的“联系邮 ...
- SQL Server 2008 R2中,变表的右键弹出菜单中的“选择前1000行”为“选择所有行”
原文:SQL Server 2008 R2中,变表的右键弹出菜单中的"选择前1000行"为"选择所有行" 从SQL Server 2008开始,微软为了提高查询 ...
- SQL Server 2008 R2 使用 PIVOT 错误
SQL Server 2008 R2 使用 PIVOT 错误! 'PIVOT' 附近有语法错误.您可能需要将当前数据库的兼容级别设置为更高的值,以启用此功能. 有关 ALTER DATABASE 的 ...
- SQL Server 2008 R2不支持limit(限制行数)
SQL Server 2008 R2不支持limit 可用:select top 3 * from Websites2 MySQL 语法 SELECT *FROM PersonsLIMIT 5; Or ...
- [转帖]微软 SQL Server 2008/R2 停止支持
微软 SQL Server 2008/R2 停止支持 微软停止支持 SQLSERVER 2008R2 https://t.cj.sina.com.cn/articles/view/3172142827 ...
- SQL Server 2008 R2——学习/练习/错误/总结/搜集
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
随机推荐
- java.lang.IncompatibleClassChangeError: Implementing class的解决办法,折腾了一天总算解决了
一,问题产生背景 git更新代码重启服务器后,问题就莫名奇妙的产生了,一看报错信息,基本看不懂,然后上百度去查,基本都是说jar包冲突,于是把矛头指向maven 二,问题的解决过程 既然确定了是mav ...
- CI框架源码阅读笔记9 CI的自动加载机制autoload
本篇并不是对某一组件的详细源码分析,而只是简单的跟踪了下CI的autoload的基本流程.因此,可以看做是Loader组件的分析前篇. CI框架中,允许你配置autoload数组,这样,在你的应用程序 ...
- .NET删除字节数组中的0字节
private static byte[] Decode(byte[] packet) { ; while (packet[i] == 0) { --i; } ]; Array.Copy(packet ...
- GJM :用JIRA管理你的项目(三)基于LDAP用户管理 [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- Oracle 免费的数据库--Database 快捷版 11g 安装使用与"SOD框架"对Oracle的CodeFirst支持
一.Oracle XE 数据库与连接工具安装使用 Oracle数据库历来以价格昂贵出名,当然贵有贵的道理,成为一个Oracle DBA也是令人羡慕的事情,如果程序员熟悉Oracle使用也有机会接触到大 ...
- JSON+YAML初步学习+ciscoconfparse
Git git clone 在github.com右上角点击加号创建新的repository 在Linux或Mac命令行下,找到你想存放这个repository的目录,然后git clone 某个re ...
- js获取本机的外网/广域网ip地址
完整源代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- javascript的浅拷贝和深拷贝
1.浅拷贝:复制一份引用,所有引用对象都指向一份数据,并且都可以修改这份数据. 2.深拷贝(复杂):复制变量值,对于非基本类型的变量,则递归至基本类型变量后,再复制. 这里画一个简单的图来加深理解: ...
- 不直接登录SharePoint服务器,通过远程直接部署WSP解决方案包
在这之前不得不说一下Sysinternals,他最初是一个网站,网站上会经常发布一些有用的系统扩展工具,之后运营这个网站的公司被微软收购.像非常著名的Procmon,AutoRuns.Process ...
- webservice简单引用
//1.创建网站//2.新建项=>添加web服务//运行texttweb.asmx可以通过访问http://域名/webservice/texttweb.asmx来验证了//3.添加服务引用=& ...