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

  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的保存的更多相关文章

  1. Easyui Datagrid 修改显示行号列宽度

    EasyUI中Datagrid的第一列显示行号,可是如果数据量大的的时候,显示行号的那一列数据会显示不完全的. 可以通过修改Datagrid的样式来解决这个问题,在样式中加入下面这个样式,就可以自己修 ...

  2. DataGrid 滚动特定的行或者列

    DataGrid 滚动特定的行或者列. DataGrid.ScrollIntoView Method (Object, DataGridColumn) .NET Framework 4.5 Silve ...

  3. oracle行转列与列转行

    一.行转列 在有些应用场景中,如学生成绩.学生所有科目的成绩都保存到一张表里面,当我们需要以列表的形式显示出学生所对应的每一科目的成绩的时候,需要使用到行转列. 示例 -- 学生成绩表 create ...

  4. PIVOT就是行转列,UNPIVOT就是列传行

    PIVOT通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合.UNPIVOT与PIVOT执行相反的操作,将表值表达式的列转换为列值. 通 ...

  5. Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行

    本文将对如何在Java程序中操作Word表格作进一步介绍.操作要点包括 如何在Word中创建嵌套表格. 对已有表格添加行或者列 复制已有表格中的指定行或者列 对跨页的表格可设置是否禁止跨页断行 创建表 ...

  6. Oracle 行转列 动态出转换的列

    本文链接:https://blog.csdn.net/Huay_Li/article/details/82924443 10月的第二天,前天写了个Oracle中行转列的pivot的基本使用方法,然后, ...

  7. SqlServer:SqlServer(sql,游标,定时作业,行转列,列转行,公用表达式递归,merge合并)

    1.加载驱动: Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); DriverManager.getCo ...

  8. 基于OpenCV的循环行、列移动函数circShift()

    ///*12 在Matlab中有个circShift()函数,可以实现行.列的循环移动 /// 在返卷积运算中,会用到这个函数.所以,在Opencv中我也定义同样 /// 功能的函数 /// 该函数有 ...

  9. SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL, ...

随机推荐

  1. stat命令--文件权限属性设置

    stat命令文件权限属性设置 stat命令用于显示文件的状态信息. stat命令的输出信息比ls命令的输出信息要更详细. 语法 stat(选项)(参数) 选项 -L:支持符号连接: -f:显示文件系统 ...

  2. MongoDB - MongoDB CRUD Operations, Query Documents, Query for Null or Missing Fields

    Different query operators in MongoDB treat null values differently. The examples on this page use th ...

  3. CSS与HTML结合

    CSS与HTML结合的4中方式: 1.每个HTML标签都有style属性 2.当页面中有多个标签具有相同样式时,可定义style标签封装样式以复用 <style type=”text/css”& ...

  4. 用Vue来实现图片上传多种方式

    没有业务场景的功能都是耍流氓,那么我们先来模拟一个需要实现的业务场景.假设我们要做一个后台系统添加商品的页面,有一些商品名称.信息等字段,还有需要上传商品轮播图的需求. 我们就以Vue.Element ...

  5. 利用media query写响应式布局

    最近才接触到响应式布局的概念,之前用到的bootstrap就是一种响应式布局的框架.学习的时候参考了http://blog.csdn.net/shoyer/article/details/829301 ...

  6. 5-python的封装与结构 - set集合

    目录 1 封装与解构 1.1 封装 1.2 解构 1.3 Python3的解构 2 set类型 2.1 set的定义 2.2 set的基本操作 2.2.1 增加元素 2.2.2 删除元素 2.2.3 ...

  7. 35 - 并发编程-GIL-多进程

    目录 1 GIL 1.1 为什么会有GIL 1.2 GIL与thread lock 1.3 个人总结 2 multiprocessing模块 2.1 Process类 2.2 Process类的方法 ...

  8. 【BubbleCup X】G:Bathroom terminal

    一个hash的题 对?出现位置直接暴力枚举,然后hash判断下,扔进map里 cf的评测机跑的针tm块 #include<bits/stdc++.h> ; ; typedef long l ...

  9. 如何将qlv格式的腾讯视频转换为mp4格式

    一般来说,每个视频网站都会有自己的视频播放格式,如优酷的KUX.爱奇艺的QSV和腾讯的QLV等. 但是大家知道,优酷是有转码功能的,而就目前来说腾讯视频还没有转码功能,下面是将qlv格式的腾讯视频转换 ...

  10. python基础(5)---整型、字符串、列表、元组、字典内置方法和文件操作介绍

    对于python而言,一切事物都是对象,对象是基于类创建的,对象继承了类的属性,方法等特性 1.int 首先,我们来查看下int包含了哪些函数 # python3.x dir(int) # ['__a ...