2011-07-14 119 views
2

我可以用linq easy做到這一點,但是我得到了一種情況,我必須創建一個存儲過程來根據表B中的2個字段(minrange,maxrange)返回true或false。因此,目標是從表A中給出一個ID,我從表A中選擇範圍值,並將此值與表B中的2個範圍進行比較。如果值在範圍內(minrange,maxrange),則返回true。謝謝。根據SQL數據庫中的2個字段計算值

+0

有沒有辦法加入到tableB? – Randy

+0

你能分享你的表格定義嗎? – Lamak

+0

兩個表之間是否存在外鍵關係? –

回答

0

不知道具體細節(關於外鍵),這個語法應該工作。

SELECT 
    CAST((CASE 
      WHEN tableAValue < tableB.maxRange and tableAValue > tableB.minRange 
       THEN 1 
      ELSE 
       0 
      END) AS BIT) 
FROM TableA 
    INNER JOIN TableB 
    ON TableA.ID = TableB.TableAID 
WHERE TableA.ID = @yourID 
1

我假設你有一個允許你從表A到表B連接記錄的字段,我將其稱爲「CategoryID」。試試這個:

SELECT 
    CASE WHEN TableA.Value BETWEEN TableB.MinValue AND TableB.MaxValue 
     THEN 1 ELSE 0 END 
FROM TableA 
    INNER JOIN TableB ON TableA.CategoryID = TableB.CategoryID 
WHERE TableA.ID = "TheID" 

祝你好運!

-Michael

+0

這將返回一個整數值而非一位(true/false) – Narnian

+0

正確。爲了簡單起見,我選擇離開演員陣容,因爲我認爲這是CASE聲明在這個問題上確實存在爭議。使用一點來表示真或假實際上是有些武斷的(儘管我總是這樣做),並且不想將答案與可能不必要的演員混淆。 –