我正在学习 SQL case
语句,并有以下存储过程
。
Select PT.[ID] 'TransactionID', PT.BatchNumber, PT.SequenceNumber, PT.TransactionDate,
PT.TerminalID, PT.TotalAmount, PT.TransactionTypeID, TT.TransactionType,
PT.PAN 'EmbossLine',PT.PreBalanceAmount, PT.PostBalanceAmount, RefTxnID, SettlementDate,PaidCash, CreditAmount, DiscountAmount,
RefPAN, Remarks, PT.Product,
case PT.Product when 1 then 'Taxi' end 'ProductName'
case PT.Product when 2 then 'Airport Lounge' end 'ProductName'
into #Temp
from POS_Transactions PT inner join TransactionType TT on TT.TransactionTypeID = PT.TransactionTypeID
where
PT.[ID] not in (Select distinct isnull(TransactionID,0) from Testcards)
and (PT.TransactionDate >= @DateFrom)
and (PT.TransactionDate < @DateTo)
and (PT.TransactionTypeID = @TransactionTypeID or @TransactionTypeID = -999)
select T.*, C.EmbossLine+' ' as 'EmbossLine', C.EmbossLine as 'EmbossLine1',
C.EmbossName, PM.MerchantID, PM.MerchantName1, C.AccountNumber, C.VehicleNumber
from #Temp T
inner join Card C on C.EmbossLine= T.EmbossLine
inner join Terminal on Terminal.TerminalID = T.TerminalID
inner join Merchant PM on PM.MerchantID = Terminal.MerchantID
where C.Status <>'E3'
and C.CardID not in (Select distinct isnull(CardID,0) from Testcards)
and (PM.MerchantID =@MerchantID or @MerchantID='-999')
and (C.EmbossLine like '%'+@EmbossLine+'%' or @EmbossLine like '-999')
and (C.EmbossName like '%'+@EmbossName+'%' or @EmbossName like '-999')
order by T.TransactionDate, MerchantName1, T.BatchNumber, T.SequenceNumber
drop table #Temp
当我创建
它时,命令成功执行。但是,当我调用它时,它会抛出以下错误
Column names in each table must be unique. Column name 'ProductName' in table '#Temp' is specified more than once.
我认为这些行的语法有问题
case PT.Product when 1 then 'Taxi' end 'ProductName'
case PT.Product when 2 then 'Airport Lounge' end 'ProductName'
有人能认出吗?
最佳答案
你的线路确实有问题。
我怀疑你正在追求类似的东西:
case PT.Product
when 1 then 'Taxi'
when 2 then 'Airport Lounge'
end 'ProductName'
在您的语法中,您创建了两种不同的情况,导致选择两列,两者的名称相同。
上面的例子可以将两个不同的值返回到一行中。
关于sql - SQL Server 中的 Case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30343572/