例:
产品编号 产品名称 规格 单价 差价
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
产品编号 产品名称 规格 单价 差价
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
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/**/
---- ----------- --------------------------------------- ---------------------------------------
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)
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)
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
*/
--> 测试数据: @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