行转列之后的datagrid的保存
行专列之后,查询的存储过程为

1 USE [APS_Future_FT]
2 GO
3 /****** Object: StoredProcedure [dbo].[P_APS_H_InternalStandardCrudePrice] Script Date: 2013/11/7 21:27:23 ******/
4 SET ANSI_NULLS ON
5 GO
6 SET QUOTED_IDENTIFIER ON
7 GO
8 -- =============================================
9 -- Author: <Author,,Name>
10 -- Create date: <Create Date,,>
11 -- Description: <Description,,>
12 -- =============================================
13 ALTER PROCEDURE [dbo].[P_APS_H_InternalStandardCrudePrice]
14 (
15 @PageSize INT ,
16 @PageIndex INT ,
17 @BeginDate DATETIME ,
18 @EndDate DATETIME ,
19 @TotalCount INT OUTPUT
20 )
21 AS
22 BEGIN
23
24 SET NOCOUNT ON;
25 ---------------------------------------------------------
26 SET @TotalCount=0
27
28 SELECT thi.CrudeStandardPriceID ,
29 vab.Name ,
30 vab.Code ,
31 thi.CrudeStandardPrice ,
32 thi.CreateDate ,
33 CONVERT(VARCHAR(10), PriceDate, 120) AS PriceDate
34 INTO #A
35 FROM T_H_InternalStandardCrudePrice thi ,
36 dbo.V_APS_BaseDataUnion vab
37 WHERE thi.CrudeStandard = vab.Code
38 AND thi.PriceDate BETWEEN @BeginDate AND @EndDate
39 ORDER BY thi.PriceDate ASC
40 ----------------------------------------------------------
41 DECLARE @i INT
42 SET @i = 0
43
44 SELECT @i = ( SELECT COUNT(*)
45 FROM #A
46 )
47 IF ( @i > 0 )
48 BEGIN
49 --读取动态列
50 DECLARE @STR NVARCHAR(MAX);
51 SELECT @STR = ( SELECT DISTINCT
52 '[' + Code + '],'
53 FROM #A
54 FOR
55 XML PATH('')
56 )
57 SELECT @STR = SUBSTRING(@STR, 1, LEN(@STR) - 1)
58
59 DECLARE @ESTR NVARCHAR(MAX)
60
61 -------------------------------------------------------------
62 --行转列
63 SET @ESTR = 'select rn=row_number()over (order by PriceDate desc),PriceDate,'
64 + @STR + '
65 FROM ( SELECT
66 Code ,
67 CrudeStandardPrice ,
68 PriceDate
69 FROM #A
70 ) AS A PIVOT ( SUM(A.CrudeStandardPrice) FOR A.Code IN ('
71 + @STR + ' ) ) AS B '
72
73 -- SET @ESTR = 'select *
74 -- FROM ( SELECT
75 -- Code ,
76 -- CrudeStandardPrice ,
77 --PriceDate
78 -- FROM #A
79 -- ) AS A PIVOT ( SUM(A.CrudeStandardPrice) FOR A.Code IN ('
80 -- + @STR + ' ) ) AS B'
81 ---------------------------------------------------------------
82 --查询总记录数
83
84 DECLARE @sql NVARCHAR(MAX)
85 SET @sql = 'select * into ##C from (' + @ESTR + ') as C'
86
87 EXEC(@sql)
88
89 SELECT @TotalCount = ( SELECT COUNT(*)
90 FROM ##C
91 )
92 DROP TABLE ##C
93 ----------------------------------------------------------------
94 --增加分页
95 SET @ESTR = 'select * from (' + @ESTR
96 + ') as C where rn BETWEEN '
97 + CAST(( ( @PageIndex ) * @PageSize + 1 ) AS NVARCHAR(20))
98 + ' and '
99 + CAST(( ( @PageIndex + 1 ) * @PageSize ) AS NVARCHAR(20))
100 + ' '
101
102 EXEC (@ESTR)
103 -------------------------------------------------------------
104 END
105 DROP TABLE #A
106
107 END

xml文件为

<data><row id="14" code="93_06" value="100" state="added" rowid="1" /><row id="14" code="name" value="New Row" state="added" rowid="2" /><row id="14" code="_uid" value="14" state="added" rowid="3" /><row id="14" code="93_11" value="100" state="added" rowid="4" /><row id="14" code="93_10" value="100" state="added" rowid="5" /><row id="14" code="93_09" value="100" state="added" rowid="6" /><row id="14" code="93_08" value="100" state="added" rowid="7" /><row id="14" code="93_12" value="100" state="added" rowid="8" /><row id="14" code="93_03" value="100" state="added" rowid="9" /><row id="14" code="93_02" value="210" state="added" rowid="10" /><row id="14" code="93_01" value="120" state="added" rowid="11" /><row id="14" code="93_07" value="100" state="added" rowid="12" /><row id="14" code="PriceDate" value="2013/11/1 0:00:00" state="added" rowid="13" /><row id="14" code="_id" value="14" state="added" rowid="14" /><row id="14" code="93_04" value="100" state="added" rowid="15" /><row id="14" code="93_05" value="100" state="added" rowid="16" /><row id="14" code="_state" value="added" state="added" rowid="17" /><row id="11" code="rn" value="1" state="modified" rowid="1" /><row id="11" code="_uid" value="11" state="modified" rowid="2" /><row id="11" code="93_12" value="200" state="modified" rowid="3" /><row id="11" code="93_11" value="200" state="modified" rowid="4" /><row id="11" code="93_10" value="200" state="modified" rowid="5" /><row id="11" code="93_06" value="200" state="modified" rowid="6" /><row id="11" code="93_09" value="200" state="modified" rowid="7" /><row id="11" code="93_08" value="200" state="modified" rowid="8" /><row id="11" code="93_03" value="200" state="modified" rowid="9" /><row id="11" code="93_02" value="200" state="modified" rowid="10" /><row id="11" code="93_01" value="200" state="modified" rowid="11" /><row id="11" code="93_07" value="200" state="modified" rowid="12" /><row id="11" code="PriceDate" value="2013-10-28" state="modified" rowid="13" /><row id="11" code="93_05" value="200" state="modified" rowid="14" /><row id="11" code="93_04" value="200" state="modified" rowid="15" /><row id="11" code="_id" value="11" state="modified" rowid="16" /><row id="11" code="_state" value="modified" state="modified" rowid="17" /></data>

存储过程为

1 USE [APS_Future_FT]
2 GO
3 /****** Object: StoredProcedure [dbo].[A_001] Script Date: 2013/11/7 19:23:03 ******/
4 SET ANSI_NULLS ON
5 GO
6 SET QUOTED_IDENTIFIER ON
7 GO
8 -- =============================================
9 -- Author: <Author,,Name>
10 -- Create date: <Create Date,,>
11 -- Description: <Description,,>
12 -- =============================================
13 ALTER PROCEDURE [dbo].[A_001] ( @str XML )
14 AS
15 BEGIN
16 -- SET NOCOUNT ON added to prevent extra result sets from
17 -- interfering with SELECT statements.
18 SET NOCOUNT ON;
19
20 DECLARE @T TABLE
21 (
22 T_id NVARCHAR(50) ,
23 T_code NVARCHAR(50) ,
24 T_value NVARCHAR(50) ,
25 T_state NVARCHAR(50)
26 )
27
28 INSERT INTO @T
29 ( T_id ,
30 T_code ,
31 T_value ,
32 T_state
33 )
34 SELECT T.r.value('@id', 'nvarchar(50)') ,
35 T.r.value('@code', 'nvarchar(50)'),
36 T.r.value('@value','nvarchar(50)'),
37 T.r.value('@state','nvarchar(50)')
38 FROM @str.nodes('/data/row') T ( r )
39
40
41
42 SELECT DISTINCT *
43 INTO #Date
44 FROM @T
45 WHERE T_code = 'PriceDate'
46
47 DELETE FROM @T
48 WHERE T_code LIKE '"_%' ESCAPE '"'
49 OR T_code = 'rn'
50 OR T_code = 'PriceDate'
51
52 SELECT T.*,
53 d.T_value T_date
54 INTO #ALL
55 FROM @T AS T
56 INNER JOIN #Date d ON T.T_id = d.T_id
57
58 --------------------------删除
59 DELETE iscp
60 FROM dbo.T_H_InternalStandardCrudePrice iscp
61 INNER JOIN #ALL a ON a.T_date = iscp.PriceDate
62 AND a.T_code = iscp.CrudeStandard
63 AND a.T_state = 'removed'
64
65
66 ---------------------------修改
67 SELECT iscp.CrudeStandardPriceID,
68 a.*
69 INTO #UPDATE
70 FROM #ALL a
71 INNER JOIN dbo.T_H_InternalStandardCrudePrice iscp
72 ON a.T_date = iscp.PriceDate
73 AND a.T_code = iscp.CrudeStandard
74
75 --SELECT * FROM #UPDATE
76
77 UPDATE T_H_InternalStandardCrudePrice
78 SET CrudeStandardPrice = up.T_value
79 FROM dbo.T_H_InternalStandardCrudePrice iscp
80 INNER JOIN #UPDATE up ON iscp.CrudeStandardPriceID = up.CrudeStandardPriceID
81
82 --------------------------------增加
83
84 INSERT INTO dbo.T_H_InternalStandardCrudePrice
85 ( CrudeStandard ,
86 PriceDate ,
87 CrudeStandardPrice
88 )
89 SELECT A.T_code,
90 CASE WHEN A.T_date IS NOT NULL
91 THEN CAST(A.T_date AS DATETIME)
92 ELSE NULL
93 END
94 ,
95 CASE WHEN A.T_value IS NOT NULL
96 THEN CAST(A.T_value AS DECIMAL)
97 ELSE NULL
98 END
99
100 FROM (
101 SELECT a.T_id,
102 a.T_code,
103 a.T_value,
104 a.T_state,
105 a.T_date
106 FROM #ALL a
107 EXCEPT
108 SELECT up.T_id,
109 up.T_code,
110 up.T_value,
111 up.T_state,
112 up.T_date
113 FROM #UPDATE up
114
115 )AS A
116
117 END

行转列之后的datagrid的保存的更多相关文章
- Easyui Datagrid 修改显示行号列宽度
EasyUI中Datagrid的第一列显示行号,可是如果数据量大的的时候,显示行号的那一列数据会显示不完全的. 可以通过修改Datagrid的样式来解决这个问题,在样式中加入下面这个样式,就可以自己修 ...
- DataGrid 滚动特定的行或者列
DataGrid 滚动特定的行或者列. DataGrid.ScrollIntoView Method (Object, DataGridColumn) .NET Framework 4.5 Silve ...
- oracle行转列与列转行
一.行转列 在有些应用场景中,如学生成绩.学生所有科目的成绩都保存到一张表里面,当我们需要以列表的形式显示出学生所对应的每一科目的成绩的时候,需要使用到行转列. 示例 -- 学生成绩表 create ...
- PIVOT就是行转列,UNPIVOT就是列传行
PIVOT通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合.UNPIVOT与PIVOT执行相反的操作,将表值表达式的列转换为列值. 通 ...
- Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行
本文将对如何在Java程序中操作Word表格作进一步介绍.操作要点包括 如何在Word中创建嵌套表格. 对已有表格添加行或者列 复制已有表格中的指定行或者列 对跨页的表格可设置是否禁止跨页断行 创建表 ...
- Oracle 行转列 动态出转换的列
本文链接:https://blog.csdn.net/Huay_Li/article/details/82924443 10月的第二天,前天写了个Oracle中行转列的pivot的基本使用方法,然后, ...
- SqlServer:SqlServer(sql,游标,定时作业,行转列,列转行,公用表达式递归,merge合并)
1.加载驱动: Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); DriverManager.getCo ...
- 基于OpenCV的循环行、列移动函数circShift()
///*12 在Matlab中有个circShift()函数,可以实现行.列的循环移动 /// 在返卷积运算中,会用到这个函数.所以,在Opencv中我也定义同样 /// 功能的函数 /// 该函数有 ...
- SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL, ...
随机推荐
- ZOJ 3787 Access System 水
LINK:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3787 思路:结构体 时间转化为秒记录下最小并且排序就好了 /** ...
- python 常用模块之ConfigParser
在程序中使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在Python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是ConfigParser, Python C ...
- 【CodeForces】908 E. New Year and Entity Enumeration
[题目]E. New Year and Entity Enumeration [题意]给定集合T包含n个m长二进制数,要求包含集合T且满足以下条件的集合S数:长度<=m,非和与的结果都在集合中. ...
- 【NOIP】普及组2010 三国游戏
[算法]贪心 [题解]如果看重一对,先选择其中一个点,该点相邻最大的肯定被选走.所以答案就是最大的[所有点的次大连边点]啦. #include<cstdio> #include<al ...
- 【nginx+tomcat集群】Nginx1.12.2+Tomcat7集群+负载均衡+Session共享
今天想着将项目优化一下,就想的实现集群分布,在本机测试:利用nginx+tomcat实现 通过上一篇博客(http://www.cnblogs.com/qlqwjy/p/8535235.html),N ...
- apache2启动失败(Failed to start The Apache HTTP Server.)解决方案
不知道如何启动apache2就启动不来了. 如下图所示: 即使卸载了重新装也是如此 经过测试卸载并清除软件包的配置即可解决 sudo apt-get purge apache2 sudo apt-g ...
- 如何在Linux下用C/C++语言操作数据库sqlite3(很不错!设计编译链接等很多问题!)
from : http://blog.chinaunix.NET/uid-21556133-id-118208.html 安装Sqlite3: 从www.sqlite.org上下载Sqlite3.2. ...
- 大数据系列之Kafka安装
先简单说下安装kafka的流程..(可配置多个zookeeper,这篇文只说一个zookeeper场景) 1.环境配置:jdk1.7+ (LZ用的是jdk1.8) 2.资料准备:下载 kafka_2. ...
- 003_循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate)的区别
表示“重复”这个含义的词有很多, 比如循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate). 循环算是最基础的概念, 凡是重复执行一段代码, 都可以称 ...
- linux系统定时任务设置
.使用at命令设置一次性定时任务 2.使用crontab设置周期性定时任务 1)cd /home 目录下,使用vi test.py创建文件,内容如下: #!/usr/bin/python#coding ...