例:
产品编号 产品名称 规格      单价     差价
0001    111     1*3g     1.00    0.5
0002    222     5*2g    28.00    2.00
0003    333     6*9g    12.00    0
如何用一条语句得到如下结果?
产品编号 产品名称 规格      单价     差价
0001    111     1*3g     1.00    null
0002    222     5*2g    28.00    null
0003    333     6*9g    12.00   null
______________________________________
0001    111     1*3g     1.00    0.5
0002    222     5*2g    28.00    2.00

解决方案 »

  1.   

    --> 测试数据: #T
    if object_id('tempdb.dbo.#T') is not null drop table #T
    create table #T (产品编号 varchar(4),产品名称 int,规格 varchar(4),单价 numeric(4,2),差价 numeric(3,2))
    insert into #T
    select '0001',111,'1*3g',1.00,0.5 union all
    select '0002',222,'5*2g',28.00,2.00 union all
    select '0003',333,'6*9g',12.00,0
    go
    select 产品编号,产品名称,单价,null as 差价
    from #T
    union all
    select 产品编号,产品名称,单价,差价
    from #T
    where 差价<>0go
    drop table #T/**/
      

  2.   

    产品编号 产品名称        单价                                      差价
    ---- ----------- --------------------------------------- ---------------------------------------
    0001 111         1.00                                    NULL
    0002 222         28.00                                   NULL
    0003 333         12.00                                   NULL
    0001 111         1.00                                    0.50
    0002 222         28.00                                   2.00(5 row(s) affected)
      

  3.   

    --1
    SELECT 产品编号,产品名称,规格,NULL 单价 FROM TB
    UNION ALL
    SELECT 产品编号,产品名称,规格,单价 FROM TB WHERE 产品编号 <> (SELECT MAX(产品编号) FROM TB)--2
    SELECT 产品编号,产品名称,规格,NULL 单价 FROM TB
    UNION ALL
    SELECT 产品编号,产品名称,规格,单价 FROM TB WHERE 产品编号 NOT IN (SELECT MAX(产品编号) FROM TB)
      

  4.   

    --> 测试数据: #T
    if object_id('tempdb.dbo.#T') is not null drop table #T
    create table #T (产品编号 varchar(4),产品名称 int,规格 varchar(4),单价 numeric(4,2),差价 numeric(3,2))
    insert into #T
    select '0001',111,'1*3g',1.00,0.5 union all
    select '0002',222,'5*2g',28.00,2.00 union all
    select '0003',333,'6*9g',12.00,0select 产品编号,产品名称,规格,单价,差价=null from #T
    union all
    select * from #T where 差价<>0/*
    产品编号 产品名称 规格      单价     差价
    0001    111     1*3g     1.00    null
    0002    222     5*2g    28.00    null
    0003    333     6*9g    12.00   null
    0001    111     1*3g     1.00    0.5
    0002    222     5*2g    28.00    2.00 
    */
      

  5.   


    --> 测试数据: @s
    declare @s table (产品编号 varchar(4),产品名称 int,规格 varchar(4),单价 numeric(4,2),差价 numeric(3,2))
    insert into @s
    select '0001',111,'1*3g',1.00,0.5 union all
    select '0002',222,'5*2g',28.00,2.00 union all
    select '0003',333,'6*9g',12.00,0select 产品编号,产品名称,规格,单价,差价=null from @s
    union all
    select * from @s where 差价<>0