ÇÉÓÃSQL PIVOTʵÏÖ»·¾³¼à²âÊý¾ÝµÄ¡°Êúºá¡±×ª»»
Ë®»·¾³¼à²âÊý¾Ý´æ´¢½á¹¹ÖÐÓÐÒ»ÖÖģʽ½Ð×ö"Êú±íģʽ"£¬¼´ÔÚ¼à²âÊý¾Ý±íÖУ¬Ä³¸öµãλÔÚij¸öʱ¼äµãÉϸ÷¼à²âÏîÄ¿µÄŨ¶È²â¶¨ÖµÔÚÎïÀí±íÖд洢ÔÚ¶àÌõ¼Ç¼ÖУ¬³ÊÊú×´·Ö²¼¡£¼à²âÊý¾Ý±íÖаüº¬²âµã´úÂë¡¢¼à²âʱ¼ä¡¢¼à²âÏîÄ¿´úÂ롢Ũ¶È²â¶¨ÖµµÈ£¬ËùÓмà²âÏîÄ¿µÄŨ¶È²â¶¨Öµ¶¼´æ´¢ÔÚͬһ¸ö×Ö¶ÎÖУ¬¼ÓÒÔ¼à²âÏîÄ¿´úÂë×÷ÎªÇø·Ö×ֶΡ£
"Êú±íģʽ"µÄ×î´óÌØµãÊÇÁé»î¡¢¾ßÓнϺõÄÀ©Õ¹ÐÔ¡£Õë¶ÔÐÂÔö¼à²âÒò×Ó£¬Ö»ÐèÒªÔÚ¼à²âÒò×Ó±àÂë±í½øÐÐά»¤£¬Ôö¼Óеļà²âÒò×Ó£¬¾ÍÄÜÂú×ãÊý¾Ý´æ´¢µÄÒªÇó¡£ÕâÖÖÉè¼ÆÄ£Ê½·Ç³£ÊʺÏ×Ô¶¯¼à²âÕ¾ÒÔ¼°ÎÛȾԴ¼à²âÊý¾ÝµÄ´æ´¢¡£µ«ÊÇ"Êú±íģʽ"Ò²ÓÐһЩ²»×ãÖ®´¦£¬±ÈÈçÊý¾Ý¿É¶ÁÐÔ²»ºÃ£¬ÄÑÒÔ±í´ïij¸öµãλij¸öʱ¼äµãÉϵÄÕûÌåÊý¾ÝÇé¿ö£¬²»·ûºÏ´«Í³Ï°¹ßµÄ"ºá±í"Êý¾ÝÔĶÁ·½Ê½¡£ÈçºÎÈÃ"Êú±í"ת»»³É"ºá±í"ÊǺܶàÓ¦ÓÃϵͳÖж¼ÒªÓöµ½µÄÒ»¸öÎÊÌâ¡£
ÏÖ¼ÙÉèÓÐÒ»ÕÅÃû³ÆÎª"×Ô¶¯Õ¾¼à²âÊý¾ÝÈÕ¾ùÖµ±í" µÄÊý¾Ý±í£¬ÏêϸÊý¾ÝÈçÏ£º
²âµã´úÂë
Äê
ÔÂ
ÈÕ
¼à²âÏîÄ¿
ÎÛȾÎïŨ¶È
P001
2008
2
1
Éú»¯ÐèÑõÁ¿
298
P001
2008
2
1
×ÜÁ×
0.526
P001
2008
2
1
»¯Ñ§ÐèÑõÁ¿
414
P001
2008
2
1
°±µª
1.09
P002
2008
2
3
Éú»¯ÐèÑõÁ¿
198
P002
2008
2
3
×ÜÁ×
0.426
P002
2008
2
3
»¯Ñ§ÐèÑõÁ¿
314
P002
2008
2
3
×ܵª
3.71
ΪÁËÄܹ»½«Êý¾Ýת»»Îªºá±íÐÎʽ£¬Ê×ÏÈ£¬ÔÚSQL Server 2005£¨»ò2008£©Êý¾Ý¿âÖн¨Á¢´æ´¢¹ý³Ìusp_pivot¡£SQL´´½¨Óï¾äÈçÏ£º
CREATE PROC [dbo].[usp_pivot]
¡¡ @schema_name AS sysname¡¡¡¡ = N'dbo',-- ±í/ÊÓͼµÄ¼Ü¹¹
¡¡ @object_name AS sysname¡¡¡¡ = NULL, -- ±í/ÊÓͼµÄÃû³Æ
¡¡ @on_rows¡¡¡¡ AS sysname¡¡¡¡ = NULL, -- ·Ö×éÁÐ--¿ÉÒÔÊÇÒÔ,Ïà¸ôµÄ¶à¸öÁÐ
¡¡ @on_cols¡¡¡¡ AS sysname¡¡¡¡ = NULL, -- ÐýתÁÐ
¡¡ @agg_func¡¡ AS NVARCHAR(12) = N'MAX',-- ¾Û¼¯º¯Êý
¡¡ @agg_col¡¡¡¡ AS sysname¡¡¡¡ = NULL -- ͳ¼ÆÁÐ
AS
¡¡ DECLARE
¡¡ @object AS NVARCHAR(600),
¡¡ @sql¡¡¡¡ AS NVARCHAR(MAX),
¡¡ @cols¡¡ AS NVARCHAR(MAX),
¡¡ @newline AS NVARCHAR(2),
¡¡ @msg¡¡¡¡ AS NVARCHAR(500);
¡¡ SET @newline = NCHAR(13) + NCHAR(10);
¡¡ SET @object = QUOTENAME(@schema_name) + N'.'
Ïà¹ØÎĵµ£º
C# Êý¾Ý¿âÖ®ÂÃ……
¼ÌÐø½ø¹¥²ã³ö²»ÇîµÄproblems
ÔÚÉÏһƪÄÚÈݵĻù´¡ÉÏ£¬ÎÒÓÖ×÷ÒԸĽø£¬ÏÖÔÚµÄÇé¿öÊÇÕâÑùµÄ£º
//In Browseuser form
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System ......
ÓеÄʱºòÎÒÃÇÐèÒªÒ»´ÎÏñÊý¾Ý¿âÖÐÌí¼Ó¶àÌõ¼Ç¼£¬ÎÒÃÇ¿ÉÒÔʹÓÃÏÂÃæµÄÓï¾äÀ´ÊµÏÖ£º
--Ìí¼ÓÒ»Ìõ¼Ç¼
INSERT INTO tableName(col1,col2,col3) VALUES (1,2,3)
--Ìí¼Ó¶àÌõ¼Ç¼
INSERT INTO tableName(col1,col2,col3)
SELECT 3,4,5
UNION ALL
SELECT 6,7,8
--´ÓÁíÍâµÄÒ»ÕűíÖжÁÈ¡¶àÌõÊý¾ÝÌí¼Óµ½Ð±íÖÐ
INSERT INTO tabl ......
ÊÓͼ
SET¡¡NOCOUNT ON;
SET Northwind;
GO
IF OBJECT_ID('dbo.ViewName') IS NOT NULL
DROP VIEW dbo.ViewName;
GO
CREATE VIEW dbo.Viewname
AS
SELECT * from customer AS C
WHERE EXISTS
(SELECT * from dbo.Orders AS O
WHERE O.CustomerI ......
Êý¾Ý¿âʵÀý½á¹¹ ÊÂÎñÒ»ÖÂÐÔ(Transactional Consistency)ºÍ»ùÓÚʱ¼äµãµÄ»Ö¸´(Point-in-time Recovery) ϵͳԪÊý¾Ý
topÊý¾Ý¿âʵÀý½á¹¹
µ±OracleʵÀýÆô¶¯Ö®ºó£¬Ëù¿´µ½µÄ¾ÍÊÇÔÚ·þÎñÆ÷ÄÚ´æÉϵÄÒ»¸ö¸ö²»Í¬ÄÚ´æ¿é¼ÓÉϲúÉúµÄÓëÕâЩÄÚ´æ½»»¥µÄºǫ́½ø³Ì¡£OracleÎĵµ½«ÕâЩÄÚ´æ½á¹¹ºÍ½ø³ÌÊյĺÜÏêϸ¡£
ÓÉOracleʵÀýËùÕ¼ÓõÄÄÚ´æ¿é³ ......