1:
select A.名称,A.数量,A.数量*B.零售价 as totalP
from A,B
where A.名称 = B.名称
2: C.名称 ,C.占地面积,C.占地面积 * D.价格 as totalP
from c,D
where C.占地面积 between D.最少面积  and   D.最大面积            

解决方案 »

  1.   

    2: select  C.名称 ,C.占地面积,C.占地面积 * D.价格 as totalP
    from c,D
    where C.占地面积 between D.最少面积  and   D.最大面积
      

  2.   

    select A.名称,B.零售价,A.数量,B.零售价*A.数量 as 总价格 
     from A left join B on A.名称 = B.名称
      

  3.   

    select C.名称, C.占地面积, C.占地面积 * D.价格 as 面积价格
    from C left join D 
    on C.占地面积>=D.最少面积  and  C.占地面积<= D.最大面积            
      

  4.   

    1,
    select A.名称,A.数量,A.数量*B.零售价 as 总价格
    from A left outer join B on A.名称 = B.名称
    2, 赞同:tj_dns(愉快的登山者) 好象第一个也一样。:)
      

  5.   

    1,画蛇添足
    select A.名称,A.数量,A.数量*ISNULL(B.零售价,0) as 总价格
    from A left outer join B on A.名称 = B.名称
    2, 没考虑小于100情况
    select C.名称, C.占地面积, (CASE WHEN C.占地面积<=100 THEN D.价格 ELSE C.占地面积 * D.价格 END) as 面积价格
    from C left join D 
    on C.占地面积>=D.最少面积  and  C.占地面积<= D.最大面积
      

  6.   

    zxdragon(zxdragon),SQL Server提示:“查询设计器不支持 CASE SQL 构造。”
      

  7.   

    create function getprice
    (@aa int)
    returns numeric
    as
    begin
    declare @price numeric(8,2)
    declare @tmp numeric(5,2)
    declare @tmpa1 int
    set @price=0
    set @tmp=0
    set @tmpa1=0
    if exists (select price from t1 where @aa>a1 and @aa<=a2)
    begin
    select @tmp=price,@tmpa1=a1 from t1 where @aa>a1 and @aa<=a2
    set @price=@price+@tmp*(@aa-@tmpa1)
    if @tmpa1=0 
    set @aa=0
    else
    set @aa=@aa-@tmpa1
    endif @aa>0 
    set @price=@price+dbo.getprice(@aa)
    return @price
    end
    go
    select c.面积,dbo.getprice(c.面积) as 价钱 from c
      

  8.   

    select 名称,case when 占地面积 between 0 and 100 then d.价格
                    else 占地面积*d.价格
                end 
    from c,d
    where 占地面积 between d.最少面积 and d.最大面积
    可以执行
      

  9.   

    我的是好的呀drop table C
    drop table DCREATE TABLE C (
    名称 varchar(50) NULL, 
    占地面积 varchar(50) NOT NULL)
    GO
    CREATE TABLE D (
    最少面积 int NULL, 
    最大面积 int NULL,
    价格 numeric(24,8)
    )
    GOinsert C values('非建筑面积',500)
    insert C values('建筑面积',200)insert D values(0,100,600)
    insert D values(100,300,2)
    insert D values(300,600,1.5)
    insert D values(600,1000,1.2)select C.名称, C.占地面积, (CASE WHEN C.占地面积<=100 THEN D.价格 ELSE C.占地面积 * D.价格 END) as 面积价格
    from C left join D 
    on C.占地面积>=D.最少面积  and  C.占地面积<= D.最大面积结果是:
    名称  占地面积 面积价格                                     
    非建筑面积 500 750.000000
    建筑面积  200  400.000000
      

  10.   

    select (select IsNull(占地面积,0) from C )* (select IsNull(价格,0) from D where (select IsNull(占地面积,0) from C ) > 最少面积 and (select IsNull(占地面积,0) from C )<=最大面积) as total_P from C,D where C.名称='非建筑面积'