【问题标题】:SQL condition join and calculation in selectSQL条件连接和select中的计算
【发布时间】:2016-01-30 15:19:14
【问题描述】:

我需要做的是将十进制数字转换为所选货币。但前提是选择了一种货币。但我还需要再计算一次。

到目前为止,我所拥有的是:

DECLARE @Currencies TABLE
(
    exchangerate decimal(10,4),
    currency uniqueidentifier,
    symbol varchar(5)
)

INSERT INTO @Currencies
SELECT exchangerate, @Currency, currencysymbol
FROM TransactionCurrencyBase
WHERE @Currency is not null AND TransactionCurrencyId = @Currency

INSERT INTO @Currencies
SELECT 1, null, '-'
WHERE @Currency is null

DECLARE @exchangerate decimal(10,4)
SET @exchangerate = (SELECT top 1 exchangerate
FROM            @Currencies)

DECLARE @Symbol varchar(5)
SET @Symbol = (SELECT top 1 symbol
FROM            @Currencies)

DECLARE @ProjBudget TABLE
(
                            projectname varchar(250),
    project uniqueidentifier,
    calcCurrency money,
                            symbol varchar(5),
                            currencyExchange decimal(10,4),
                            exchange decimal(10,4)
)

INSERT INTO @ProjBudget
SELECT o.Name, pa.new_projectactivityid, CASE WHEN pa.new_activitypercentage IS NOT NULL THEN  ((o.new_budgetmin/t.ExchangeRate)*@exchangerate) * 
(pa.new_activitypercentage / 100.0) ELSE  ((o.new_budgetmin/t.ExchangeRate)*@exchangerate) END AS Calc, currencysymbol, t.ExchangeRate, @exchangerate
FROM OpportunityBase o join TransactionCurrencyBase t on @exchangerate != 1 AND o.TransactionCurrencyId = t.TransactionCurrencyId
JOIN new_projectactivityBase AS pa ON o.OpportunityId = pa.new_Project

但这仅在选择了货币时才有效。 有什么想法吗?

【问题讨论】:

  • 这里是如何涉及 MySQL 的?
  • ssrs 和报告服务也不应该是标签。这应该只是 sql。它具有误导性。
  • MySQL 在建议的标签中。这是对 ssrs 报告的查询,这就是添加它的原因。

标签: sql dynamics-crm


【解决方案1】:

我设法做到了这一点。不确定这是不是,但它有效。

DECLARE @ProjBudget TABLE
(
    project uniqueidentifier,
    calcCurrency money,
    calcNoCurrency money
)

INSERT INTO @ProjBudget
SELECT pa.new_projectactivityid, CASE WHEN pa.new_activitypercentage IS NOT NULL THEN  ((o.new_budgetmin/t.ExchangeRate)*@exchangerate) * 
(pa.new_activitypercentage / 100.0) ELSE  ((o.new_budgetmin/t.ExchangeRate)*@exchangerate) END AS Calc,
CASE WHEN pa.new_activitypercentage IS NOT NULL THEN  o.new_budgetmin * 
(pa.new_activitypercentage / 100.0) ELSE  o.new_budgetmin END AS CalcWithoutExchange
FROM FilteredOpportunity o join FilteredTransactionCurrency t on o.TransactionCurrencyId = t.TransactionCurrencyId
JOIN Filterednew_projectactivity AS pa ON o.OpportunityId = pa.new_Project

【讨论】:

    猜你喜欢
    • 2014-12-01
    • 1970-01-01
    • 2021-07-01
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多