1

クライアントの生年月日を世代に分けようとしている次のコードがありますが、何らかの理由で列名エラーが発生しています。そして、コードのGenY部分と関係があると思われるクエリテキストエラーを解析できません

SELECT Birthdate, (
    CASE WHEN Birthdate <= '12/31/2964' THEN BabyBoomer 
         WHEN Birthdate >= '1/1/1980' THEN GenY 
         WHEN Birthdate >='1/1/1965' AND <='12/31/1979' THEN GenY 
         ELSE NULL 
    END) AS Generation
FROM  dbo.All_Employee_Detail
GROUP BY Birthdate
4

3 に答える 3

3

これらの値(BabyBoomerGenY)が列ではなく文字列である場合、それらは識別子ではなく文字列リテラルであるため、一重引用符で囲む必要があります。

SELECT Birthdate, 
      (CASE WHEN Birthdate <= '12/31/2964' 
              THEN 'BabyBoomer' 
            WHEN Birthdate >= '1/1/1980'  
              THEN 'GenY' 
            WHEN Birthdate BETWEEN '1/1/1965' AND '12/31/1979' 
              THEN 'GenY' 
            ELSE NULL 
       END) AS Generation
FROM  dbo.All_Employee_Detail
GROUP BY Birthdate

更新1

SELECT Birthdate, 
      (CASE WHEN Birthdate BETWEEN '1/1/1980' AND '12/31/2964' 
              THEN 'BabyBoomer' 
            WHEN Birthdate BETWEEN '1/1/1965' AND '12/31/1979' 
              THEN 'GenY' 
            ELSE NULL 
       END) AS Generation
FROM  dbo.All_Employee_Detail
GROUP BY Birthdate
于 2013-02-28T14:33:13.610 に答える
0

日付文字列または列名、あるいはその両方である可能性があると思います。それらをISO format(すなわち; yyyymmdd)に入れてみてください。列名でない場合は、文字列としてマークする必要がありますBabyBoomerGenY'

また、CASEステートメントはを返す必要がありsingle data typeます。

SELECT Birthdate, (
    CASE WHEN Birthdate >= '19650101' AND Birthdate <= '19800101' THEN 'GenY' 
         WHEN Birthdate >  '19800101' AND Birthdate <= '29641231' THEN 'BabyBoomer'
         ELSE NULL 
    END) AS Generation
FROM  dbo.All_Employee_Detail
GROUP BY Birthdate
于 2013-02-28T14:42:04.310 に答える
0

あなたのクエリを見ると、JWが言ったように実行でき、クエリを単純化できると思いました...2つの句が同じ結果を生成するため、必要のないときに別の句を使用しているように見えるためです。ああ、まだ2964年にはほど遠い。:p

    SELECT Birthdate, 
          (CASE WHEN Birthdate <= '12/31/1964' 
                  THEN 'BabyBoomer' 
                WHEN Birthdate > '12/31/1964'
                  THEN 'GenY' 
                ELSE NULL 
           END) AS Generation
    FROM  dbo.All_Employee_Detail
    GROUP BY Birthdate
于 2013-02-28T14:53:12.833 に答える