2011-07-14 78 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声明在这个问题上确实存在争议。使用一点来表示真或假实际上是有些武断的(尽管我总是这样做),并且不想将答案与可能不必要的演员混淆。 –