У меня есть SQL
запрос следующим образомКак использовать динамический, если условие в SQL
select TransactionMode as [Modes],
TransactionCode as [Codes],
TransactionAmount as [Amount],SubTotal,Total
from TransactionDetails where CurrentTime> CAST(GETDATE()as date)
Это дает о/р следующим
Modes Codes Amount SubTotal Total
CARDS ICICI 12 13.18 13.18
CARDS ICICI 200 219.7 219.7
CARDS ICICI 500 549.25 549.25
BUY COD 7000 42.898 38.67
CARDS SBI 400 439.4 439.4
Я хочу, чтобы рассчитать комиссию на основе TransactionMode
колонн .Я попробовал мой запрос следующим образом
Declare @TransactionMode varchar(250);
set @TransactionMode='select TransactionMode from TransactionDetails'
IF @TransactionMode = 'CARDS'
select transactioncode as [Type], count(TransactionCode) as [No of Trans], SUM(Total) as [Amount],
ABS(SUM(Subtotal-TransactionAmount)) as [Comission] from dbo.TransactionDetails where CurrentTime> CAST(GETDATE()as date) and
Status='Active' group by transactioncode
ELSE
select transactioncode as [Type], count(TransactionCode) as [No of Trans], SUM(Total) as [Amount],
ABS(SUM(Subtotal-Total)) as [Comission] from dbo.TransactionDetails
where CurrentTime> CAST(GETDATE()as date)
and Status='Active' group by transactioncode
Я ожидаю, о/р, как
Type No Of Trans Amount Comission
COD 1 38.67 4.228
ICICI 3 782.13 70.13
SBI 1 439.4 39.4
Вместо этого я получаю
Type No Of Trans Amount Comission
COD 1 38.67 4.228
ICICI 3 782.13 0
SBI 1 439.4 0
Где я неправ?
ваш запрос, кажется чтобы быть в порядке и в соответствии с T-sql, он дает правильную выходную информацию. Вы должны иметь над чем-то выглядеть, если вывод не является правильным, то что-то не так с вашим условием. Это правильно ABS (SUM (итог-TransactionAmount)) как [ Комиссия]. ЧТО-ТО ЧТО-ТО с формулой – KumarHarsh
Я попытался использовать 'ABS (SUM (Subtotal-TransactionAmount)) как [Commission]' и 'SU M (Subtotal-TransactionAmount) как [Comission] ', но получая тот же результат :( –
' set @ TransactionMode = 'select TransactionMode from TransactionDetails'' Немного беспокоит эта строка, поскольку '@ TransactionMode' никогда не будет равняться' CARDS' и вы всегда будете выполнять условие else, потому что '' select TransactionMode from TransactionDetails'' является строкой, не являющейся оператором select, и подзапрос возвращает более 1 значения. – Prabhat