专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Sql Server

这个用SQL如何实现

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
这个用SQL怎么实现
有一个表in_stock(月份mth,日期indate,编码stock_no名称stock_na)
  月份----日期--------编码------名称--------进库数量
  1          2012/1/2   001         TCL电视    5
  1          2012/1/5   001         TCL电视    6
  2          2012/2/6   001         TCL电视    10
  1          2012/1/3   002         格力空调    20
  1          2012/1/4   002         格力空调    20
  2          2012/2/8   002         格力空调    30
  ...
  用SELECT 语句怎么实现以下结果?
  编码------名称--------1月份-----2月份------3月份....
  001         TCL电视    11            10
  002          格力空调   40            30
  ............................................................................
如果要自定义函数,怎么定义这个函数?

------解决方案--------------------
USE test
GO



-->生成表in_stock

if object_id('in_stock') is not null 
drop table in_stock
Go
Create table in_stock([mth] smallint,[indate] datetime,[stock_no] nvarchar(3),[stock_name] nvarchar(5),[qty] smallint)
Insert into in_stock
Select 1,'2012/1/2',N'001',N'TCL电视',5
Union all Select 1,'2012/1/5',N'001',N'TCL电视',6
Union all Select 2,'2012/2/6',N'001',N'TCL电视',10
Union all Select 1,'2012/1/3',N'002',N'格力空调',20
Union all Select 1,'2012/1/4',N'002',N'格力空调',20
Union all Select 2,'2012/2/8',N'002',N'格力空调',30



DECLARE @col NVARCHAR(MAX)

SELECT 
@col=ISNULL(@col+',','')+'SUM(CASE WHEN mth='+LTRIM(mth)+' THEN qty END) As ['+LTRIM(mth)+'月份]'
FROM in_stock
GROUP BY mth
EXEC ( N'SELECT [stock_no] As 编码,[stock_name] As 名称,'+@col+' FROM in_stock GROUP BY [stock_no],[stock_name]' )

/*
编码   名称    1月份     2月份
---- ----- ----------- -----------
001  TCL电视 11          10
002  格力空调  40          30
*/
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: