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 にマイナスの値は必要ありませんが、それでも身長や給与などの条件の1つとして与えられますが、年齢の場合は失敗しました。そのため、失敗した人は 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 に答える