34,838
社区成员




declare @t table
(产品编号 varchar(3),产品名称 varchar(2),大包装数量 int,小包装数量 int,换算关系 int)
insert into @t
select '001','AA',10,0,10 union all
select '002','BB',0,12,12 union all
select '003','CC',2,0,8
select 产品编号,产品名称,
大包装数量=大包装数量+小包装数量/换算关系,
小包装数量=大包装数量*换算关系+小包装数量,
换算关系
from @t
/*
产品编号 产品名称 大包装数量 小包装数量 换算关系
---- ---- ----------- ----------- -----------
001 AA 10 100 10
002 BB 1 12 12
003 CC 2 16 8
(3 行受影响)
select 产品编号 , 产品名称,
(case when 大包装数量 = 0 then 小包装数量 / 换算关系 else 大包装数量 end) as 大包装数量,
(case when 小包装数量 = 0 then 大包装数量 * 换算关系 else 小包装数量 end) as 大包装数量,
换算关系
from tb
[换算关系]=CASE WHEN [换算关系]=0 THEN [小包装数量]/[大包装数量] ELSE [换算关系] END
换算关系也是一种情况吧use Tempdb
go
--> -->
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([产品编号] nvarchar(3),[产品名称] nvarchar(2),[大包装数量] int,[小包装数量] int,[换算关系] int)
Insert #T
select N'001',N'AA',10,0,10 union all
select N'002',N'BB',0,12,12 union all
select N'003',N'CC',2,0,8
Go
Select [产品编号],[产品名称],
[大包装数量]=CASE WHEN [大包装数量]=0 THEN [小包装数量]/[换算关系] ELSE [大包装数量] END,
[小包装数量]=CASE WHEN [小包装数量]=0 THEN [大包装数量]*[换算关系] ELSE [小包装数量] END,
[换算关系]
from #T
/*
产品编号 产品名称 大包装数量 小包装数量 换算关系
001 AA 10 100 10
002 BB 1 12 12
003 CC 2 16 8*/
select 产品编号 , 产品名称,
(case when 大包装数量 = 0 then 小包装数量 / 换算关系 else 大包装数量 end) 大包装数量,
(case when 小包装数量 = 0 then 大包装数量 * 换算关系 else 大包装数量 end) 大包装数量,
换算关系
from tb
--> 测试数据: [tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb] (产品编号 varchar(3),产品名称 varchar(2),大包装数量 int,小包装数量 int,换算关系 int)
insert into [tb]
select '001','AA',10,0,10 union all
select '002','BB',0,12,12 union all
select '003','CC',2,0,8
--开始查询
select 产品编号,产品名称,
大包装数量=case 大包装数量 when 0 then 小包装数量/换算关系 else 大包装数量 end,
小包装数量=case 小包装数量 when 0 then 大包装数量*换算关系 else 小包装数量 end,
换算关系
from [tb]
--结束查询
drop table [tb]
/*
产品编号 产品名称 大包装数量 小包装数量 换算关系
---- ---- ----------- ----------- -----------
001 AA 10 100 10
002 BB 1 12 12
003 CC 2 16 8
(3 行受影响)
declare @t table
(产品编号 varchar(3),产品名称 varchar(2),大包装数量 int,小包装数量 int,换算关系 int)
insert into @t
select '001','AA',10,0,10 union all
select '002','BB',0,12,12 union all
select '003','CC',2,0,8
select
产品编号,产品名称,
大包装数量=CASE WHEN 大包装数量=0 THEN 小包装数量/换算关系 ELSE 大包装数量 end,
小包装数量=CASE WHEN 小包装数量=0 THEN 大包装数量*换算关系 ELSE 小包装数量 END,
换算关系 from @t
/*
产品编号 产品名称 大包装数量 小包装数量 换算关系
---- ---- ----------- ----------- -----------
001 AA 10 100 10
002 BB 1 12 12
003 CC 2 16 8
*/
--当字段很多的时候,换算关系是谁和谁的关系呢?
select 产品编号,产品名称,
大包装数量=大包装数量+小包装数量/换算关系,
小包装数量=大包装数量*换算关系+小包装数量,
换算关系
from tb