2012-05-08 151 views
0

我用以下語句,以確定正確的前綴:式電話呼叫計算

select * 
from [lcsCDR].[dbo].[Phones] c 
inner join [CallAnalysisDatabase].[dbo].[CallRates$] r 
    on r.Prefix COLLATE Latin1_General_CI_AI = SUBSTRING(c.PhoneUri,1,LEN(r.Prefix)) 
left join [CallAnalysisDatabase].[dbo].[CallRates$] r_anti 
    on r_anti.Prefix COLLATE Latin1_General_CI_AI = SUBSTRING(c.PhoneUri,1,LEN(r_anti.Prefix)) 
    and LEN(r_anti.Prefix) > LEN(r.Prefix) 
where r_anti.Prefix is null 

能不能請你給我一個例子添加此語句中集成了一個公式?

的 '費率' 表包含2個計算字段:

  • start_rate
  • rate_per_minute

甲表 'VoipDetails' 和SessionDetails包含如下因素:

DATEDIFF(s, VoipDetails.SessionIdTime, SessionDetails.SessionEndTime) 

如果找到正確的前綴,然後使用以下格式:

DATEDIFF(s, VoipDetails.SessionIdTime, SessionDetails.SessionEndTime))/60)*r.rate_per_minute)+start_rate) 

您能否給我一個pl/sql ms sql server管理工作室的例子?

+0

看起來這是涉及到一個問題,我之前發佈:http://stackoverflow.com/questions/3709323/what-is-a-good-approach- in-ms-sql-server-2008-to-join-on-a-best-match –

+0

謝謝,它幾乎是相同的問題,但語法不同。我不知道如何將我的公式整合到前綴select語句中,有什麼建議嗎? – Guido

回答

0

如果我正確理解您的問題,那麼您需要T-SQL中的標量函數。

檢查了這一點:

Create Function T-SQL Reference

+0

丹尼爾,謝謝你的建議! – Guido

+0

由於我對標量函數不太熟悉,您能否設置集成在我的前綴選擇語句中的示例? – Guido

+0

先走一走。創建一個函數,嘗試在select中調用它,然後如果你仍然需要幫助,我會檢查它。 –