2

私が持っているこの関数は私が望むことをしますが、一度にそれを行う方法があるかどうか疑問に思っています:

drop table ##aa
select s.storeid,cast(LEFT(p.paytype,1) as varchar(50)) as Paytype,SUM(amount) as Total
into ##aa
from RPTrs s, rpPay p
where s.storeid=p.StoreID and s.ReceiptNO=p.ReceiptNo 
and trsdate between '1/1/06' and '1/1/13'
group by s.storeid,LEFT(p.paytype,1)

update A set a.paytype=b.currencydesc
from ##aa a, Currencies b
where a.Paytype=b.POSCurrency

select * from ##aa order by Paytype, StoreID

私が求めているのは、b.CurrencyDescを最初のp.paytypeに適用したいということです。Paytypeは例としてCを表示するだけですが、Cashを表し、Visaを表すためにVを使用します。これは、通貨の表に記載されています。

4

1 に答える 1

1

を追加できるようですJOIN

select   s.storeid
       , b.currencydesc as Paytype
       , SUM(amount)    as Total
into     ##aa
from     RPTrs s

join     rpPay p
on       s.storeid=p.StoreID
     and s.ReceiptNO=p.ReceiptNo

join     Currencies b 
on       b.POSCurrency=cast(LEFT(p.paytype,1) as varchar(50))

where    trsdate between '1/1/06' and '1/1/13'
group by s.storeid
       , b.currencydesc

明示的な結合構文を使用するように変換されました。どのテーブルが貢献しているかわかりませんtrsdate。そしてCAST、結合条件でが必要かどうかはわかりません。

于 2013-01-31T23:21:16.040 に答える