1
SELECT 
    A.First_Name, b.First_Name, A.DOB, B.DOB, A.Token, B.Token, 
    DATEDIFF(YEAR, A.DOB, B.DOB)                        -
    (CASE
       WHEN DATEADD(YY, DATEDIFF(YEAR, A.DOB, B.DOB), A.DOB) > Getdate() 
         THEN 1                                        
         ELSE 0 END) 'Age Difference' 
FROM 
   Boys_details A , Girls_details B
WHERE
   a.Cast = 'brahmin'
   AND A.City = 'pune'
   AND a.Height >= B.Height
   AND a.Salary >= B.salary

输出:

Nilesh  Ruchita 1973-01-21  1964-12-01  9   89  -9
Nilesh  Smitha  1973-01-21  1976-07-30  9   77  3
Nilesh  Richa   1973-01-21  1974-04-21  9   2   1

我不想在 output 中出现负值,但它仍然是作为身高和薪水之类的条件之一令人满意的,但如果年龄大了,它们就失败了。所以失败的人不想在o / p中显示它们请帮助我。

4

2 回答 2

1

在子查询中怎么样?

SELECT  *
FROM
        (
            SELECT  A.First_Name,
                    b.First_Name,
                    A.DOB,
                    B.DOB,
                    A.Token,
                    B.Token, 
                    DATEDIFF(YEAR,A.DOB,B.DOB) -
                        (CASE WHEN DATEADD(YY,DATEDIFF(YEAR,A.DOB,B.DOB),A.DOB)> Getdate() 
                                THEN 1                                        
                                ELSE 0 
                        END) AS [Age Difference] 
            from    Boys_details A , 
                    Girls_details B
            where   a.Cast='brahmin' and 
                    A.City='pune' and 
                    a.Height >= B.Height and 
                    a.Salary>=B.salary
        ) s
WHERE [Age Difference] >= 0
于 2013-03-28T14:15:27.120 回答
0

只需将您的 case 语句添加到您的 where 子句中:

SELECT 
    A.First_Name, b.First_Name, A.DOB, B.DOB, A.Token, B.Token, 
    DATEDIFF(YEAR, A.DOB, B.DOB)                        -
    (CASE
       WHEN DATEADD(YY, DATEDIFF(YEAR, A.DOB, B.DOB), A.DOB) > Getdate() 
         THEN 1                                        
         ELSE 0 END) 'Age Difference' 
FROM 
  Boys_details A , Girls_details B
WHERE
   a.Cast = 'brahmin'
   AND A.City = 'pune'
   AND a.Height >= B.Height
   AND a.Salary >= B.salary
   AND (CASE WHEN DATEADD(YY, DATEDIFF(YEAR, A.DOB, B.DOB), A.DOB) > Getdate() 
     THEN 1                                        
     ELSE 0 END) => 0
于 2013-03-28T14:48:50.837 回答