sql – 如何动态地使用日期作为列进行转动
发布时间:2020-12-12 08:51:13 所属栏目:MsSql教程 来源:网络整理
导读:我有一个包含产品ID和名称的表格,另一个表格包含这些产品在特定日期的库存.如Item1在1-1-2014有6个库存,在2-1-2014有8个库存. 我试图在存储过程中显示这些内容,使其看起来像一个日历,显示一个月中的所有日期以及单元格中可用的库存.展示这个的最佳方式是什么
我有一个包含产品ID和名称的表格,另一个表格包含这些产品在特定日期的库存.如Item1在1-1-2014有6个库存,在2-1-2014有8个库存.
我试图在存储过程中显示这些内容,使其看起来像一个日历,显示一个月中的所有日期以及单元格中可用的库存.展示这个的最佳方式是什么? 例如: Name | 1-1-2014 | 2-1-2014 | 3-1-2014 | 4-1-2014 Item1 | 6 | 8 | | 6 Item2 | | 2 | 1 | 原始表 – 名称 ID | Name 1 | Item1 2 | Item2 原始表 – Stockdates ID | NameID | Stock | Date 1 | 1 | 8 | 2-1-2014 2 | 2 | 2 | 4-1-2014 解决方法这是您的示例表SELECT * INTO #Names FROM ( SELECT 1 ID,'ITEM1' NAME UNION ALL SELECT 2 ID,'ITEM2' NAME )TAB SELECT * INTO #Stockdates FROM ( SELECT 1 ID,1 NAMEID,8 STOCK,'2-1-2014 ' [DATE] UNION ALL SELECT 2 ID,2 NAMEID,2 STOCK,'4-1-2014 ' [DATE] )TAB 将连接数据放入一个temperory表 SELECT N.NAME,S.[DATE],S.STOCK INTO #TABLE FROM #NAMES N JOIN #Stockdates S ON N.ID=S.NAMEID 获取枢轴列 DECLARE @cols NVARCHAR (MAX) SELECT @cols = COALESCE (@cols + ',[' + CONVERT(NVARCHAR,[DATE],106) + ']','[' + CONVERT(NVARCHAR,106) + ']') FROM (SELECT DISTINCT [DATE] FROM #TABLE) PV ORDER BY [DATE] 现在转动它 DECLARE @query NVARCHAR(MAX) SET @query = ' SELECT * FROM ( SELECT * FROM #TABLE ) x PIVOT ( SUM(STOCK) FOR [DATE] IN (' + @cols + ') ) p ' EXEC SP_EXECUTESQL @query 你的结果就在这里 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- SQLSERVER2000攻略(1)-工作流程篇
- 为什么SQL Server GEOGRAPHY允许-15069°和15069
- entity-framework – 实体框架4.1“Code First”
- 当SQL 2005中的自动编号列的编号用尽时,会发生什
- SQL Server中通过reverse取某个最后一次出现的符
- sql-server-2008 – 由于变量为NULL而避免IF ELS
- sql-server – 如何在不创建函数的情况下拆分SQL
- SqlServer 排名函数(row_number、rank、dense_r
- sql-server – 如何更改SQL Server数据库的排序规
- 获取SqlServer2005表结构(字段,主键,外键,递增
热点阅读