数据结构及数据:内码                                    年度    月份    本月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

解决方案 »

  1.   

    {BF785975-B906-4C1E-90E4-9AD295A1BEE9} 2010 10 0.0000 400.0000 0.0000 0.0000 ... 0.0000这个应该是2号吧?
      

  2.   

    大致为: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
    ...
    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 日期
    )
      

  3.   

    CREATE TABLE [dbo].[order_MonthProduceEntry]
    (
    [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
    建表语句
      

  4.   

    create table tb(内码 varchar(50),年度 int,月份 int,本月1号 decimal(18,4),
                                                       本月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 行)*/
      

  5.   

    SELECT 内码,ltrim(年度)+'-'+LTRIM(月份)+'-'+
           CASE WHEN MAX(本月1号)<>0 then '01'
                WHEN MAX(本月2号)<>0 then '02'
                
       END 
    FROM [Table]
    GROUP BY 内码,年度,月份