sql – 如何动态地使用日期作为列进行转动
发布时间:2020-05-23 07:13:14 所属栏目: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
你的结果就在这里 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server-2008 – T-SQL删除所有非alpha和非数字字符
- SQL Server SQL对冗余数据的删除重复记录只保留单条的说明
- SQL Server无日志恢复数据库(2种方法)
- sql-server – 如何在DST之前或之后的日期获得UTC与本地时间
- 用于计算坐标接近度的SQL查询
- Windows上安装Apache2、PHP5、MySQL5及与Resin配合实现多系
- sql-server – SSRS使用FOR XML自动别名子查询列
- sql-server-2005 – 我可以限制SQL Server 2005使用的CPU数
- sql-server – 我可以在构建mssql全文索引时定义要使用的断
- ‘sp_executesql’附近的语法不正确
