数据结构及数据:内码 年度 月份 本月1号 本月2号 本月3号 本月4号 ... 本月31号
{BF785975-B906-4C1E-90E4-9AD295A1BEE9} 2010 10 0.0000 0.0000 400.0000 0.0000 ... 0.0000
{BF785975-B906-4C1E-90E4-9AD295A1BEE9} 2010 10 0.0000 400.0000 0.0000 0.0000 ... 0.0000
{1E5C6584-AFA6-4F22-9866-DCED29E0C824} 2010 10 0.0000 1000.0000 0.0000 0.0000 ... 0.0000
{1E5C6584-AFA6-4F22-9866-DCED29E0C824} 2010 10 0.0000 0.0000 1000.0000 0.0000 ... 0.0000
{1E5C6584-AFA6-4F22-9866-DCED29E0C824} 2010 10 0.0000 0.0000 0.0000 400.0000 ... 0.0000
{BF785975-B906-4C1E-90E4-9AD295A1BEE9} 2010 10 0.0000 0.0000 0.0000 50.0000 ... 0.0000说明:“本月1号” 指的是该月1号的生产排产数量。问题: 求第一次的排产日期 (group by 内码)要得到的结果:
内码 第一次排产日期
{BF785975-B906-4C1E-90E4-9AD295A1BEE9} 2010-10-03
{1E5C6584-AFA6-4F22-9866-DCED29E0C824} 2010-10-02
解决方案 »
- 如何查询带有通配符(% _)的字符串?
- 可不可以用transact-sql语句修改表的名字
- 获得本次会话Session_id
- 一个WHERE条件的写法
- 如何将一个表的某一字段的记录做为另一个表的字段??
- 求一存储过程
- 我的ERP系统,使用SQL 2008,使用过程经常出现查询慢,或查询结果前后不一致。原因在那,谢谢。
- 数据库备份过程中出错,该怎么办,非常感谢
- 数据横向转换的SQL语句
- 在Linux下用C语言来存取远程Windows下SQL Server2000中的数据,请问如何实现?
- SQL中的模式到底是个什么概念啊?
- 高手求助: 将 expression 转换为数据类型 smalldatetime 时发生算术溢出错误。语句已终止。
(
select 内码 ,cast(年度 as varchar) +'-' + cast(月份 as varchar) + '-01' 日期,本月1号 数据 from tb
union all
select 内码 ,cast(年度 as varchar) +'-' + cast(月份 as varchar) + '-02' 日期,本月2号 数据 from tb
...
select 内码 ,cast(年度 as varchar) +'-' + cast(月份 as varchar) + '-31' 日期,本月31号 数据 from tb
) m where m.数据 > 0 and 日期 = (select top 1 日期 from
(
select 内码 ,cast(年度 as varchar) +'-' + cast(月份 as varchar) + '-01' 日期,本月1号 数据 from tb
union all
select 内码 ,cast(年度 as varchar) +'-' + cast(月份 as varchar) + '-02' 日期,本月2号 数据 from tb
...
select 内码 ,cast(年度 as varchar) +'-' + cast(月份 as varchar) + '-31' 日期,本月31号 数据 from tb
) n
where n.内码 = m.内码 and n.数据 > 0 order by 日期
)
(
[FID] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL,
[FYear] [int] NULL,
[FMonth] [int] NULL,
[本月1号] [decimal] (16, 4) NULL,
[本月2号] [decimal] (16, 4) NULL,
[本月3号] [decimal] (16, 4) NULL,
[本月4号] [decimal] (16, 4) NULL,
[本月5号] [decimal] (16, 4) NULL,
[本月6号] [decimal] (16, 4) NULL,
[本月7号] [decimal] (16, 4) NULL,
[本月8号] [decimal] (16, 4) NULL,
[本月9号] [decimal] (16, 4) NULL,
[本月10号] [decimal] (16, 4) NULL,
[本月11号] [decimal] (16, 4) NULL,
[本月12号] [decimal] (16, 4) NULL,
[本月13号] [decimal] (16, 4) NULL,
[本月14号] [decimal] (16, 4) NULL,
[本月15号] [decimal] (16, 4) NULL,
[本月16号] [decimal] (16, 4) NULL,
[本月17号] [decimal] (16, 4) NULL,
[本月18号] [decimal] (16, 4) NULL,
[本月19号] [decimal] (16, 4) NULL,
[本月20号] [decimal] (16, 4) NULL,
[本月21号] [decimal] (16, 4) NULL,
[本月22号] [decimal] (16, 4) NULL,
[本月23号] [decimal] (16, 4) NULL,
[本月24号] [decimal] (16, 4) NULL,
[本月25号] [decimal] (16, 4) NULL,
[本月26号] [decimal] (16, 4) NULL,
[本月27号] [decimal] (16, 4) NULL,
[本月28号] [decimal] (16, 4) NULL,
[本月29号] [decimal] (16, 4) NULL,
[本月30号] [decimal] (16, 4) NULL,
[本月31号] [decimal] (16, 4) NULL
) ON [PRIMARY]
Go
建表语句
本月2号 decimal(18,4),
本月3号 decimal(18,4),
本月4号 decimal(18,4))
insert into tb values('{BF785975-B906-4C1E-90E4-9AD295A1BEE9}', 2010, 10 ,0.0000 ,0.0000 ,400.0000 ,0.0000 )
insert into tb values('{BF785975-B906-4C1E-90E4-9AD295A1BEE9}', 2010, 10 ,0.0000 ,400.0000 ,0.0000 ,0.0000 )
insert into tb values('{1E5C6584-AFA6-4F22-9866-DCED29E0C824}', 2010, 10 ,0.0000 ,1000.0000 ,0.0000 ,0.0000 )
insert into tb values('{1E5C6584-AFA6-4F22-9866-DCED29E0C824}', 2010, 10 ,0.0000 ,0.0000 ,1000.0000 ,0.0000 )
insert into tb values('{1E5C6584-AFA6-4F22-9866-DCED29E0C824}', 2010, 10 ,0.0000 ,0.0000 ,0.0000 ,400.0000 )
insert into tb values('{BF785975-B906-4C1E-90E4-9AD295A1BEE9}', 2010, 10 ,0.0000 ,0.0000 ,0.0000 ,50.0000)
go--大致为:select m.* from
(
select 内码 ,cast(年度 as varchar) +'-' + cast(月份 as varchar) + '-01' 日期,本月1号 数据 from tb
union all
select 内码 ,cast(年度 as varchar) +'-' + cast(月份 as varchar) + '-02' 日期,本月2号 数据 from tb
union all
select 内码 ,cast(年度 as varchar) +'-' + cast(月份 as varchar) + '-03' 日期,本月3号 数据 from tb
union all
select 内码 ,cast(年度 as varchar) +'-' + cast(月份 as varchar) + '-04' 日期,本月4号 数据 from tb
) m where m.数据 > 0 and 日期 = (select top 1 日期 from
(
select 内码 ,cast(年度 as varchar) +'-' + cast(月份 as varchar) + '-01' 日期,本月1号 数据 from tb
union all
select 内码 ,cast(年度 as varchar) +'-' + cast(月份 as varchar) + '-02' 日期,本月2号 数据 from tb
union all
select 内码 ,cast(年度 as varchar) +'-' + cast(月份 as varchar) + '-03' 日期,本月3号 数据 from tb
union all
select 内码 ,cast(年度 as varchar) +'-' + cast(月份 as varchar) + '-04' 日期,本月4号 数据 from tb
) n
where n.内码 = m.内码 and n.数据 > 0 order by 日期
)drop table tb
/*
内码 日期 数据
-------------------------------------------------- ---------------------------------------------------------------- --------------------
{BF785975-B906-4C1E-90E4-9AD295A1BEE9} 2010-10-02 400.0000
{1E5C6584-AFA6-4F22-9866-DCED29E0C824} 2010-10-02 1000.0000(所影响的行数为 2 行)*/
CASE WHEN MAX(本月1号)<>0 then '01'
WHEN MAX(本月2号)<>0 then '02'
END
FROM [Table]
GROUP BY 内码,年度,月份