2016-06-22 8 views
-2

下のコードで、CASEステートメントの結果を変数に代入しようとしています。私はそれが働いているが、私の問題は、私のCASEステートメントは、列名のエイリアスを持っているが、SQL Serverを使用して変数にエイリアスを持つcaseステートメントを割り当てる方法

また、その列にGRAND TOTALを取得するために変数をSUMにする必要があります。私はSQL Server 2014で作業しています。

私は解決策を見つけることができず、誰かが方向性/助けを提供できることを期待していました。前もって感謝します。ここで

が私のSQLコードです:あなたは値を代入しているときのような可変

SELECT DISTINCT a1.SCHYEAR, a1.LocationName as LOCATIONNAME, a1.GRADE, a1.[RACE/ETHNICITY], 
    @504Count=(
    CASE 
     WHEN a1.StudentPermID IN (SELECT DISTINCT t4.Permnum FROM #504 t4) THEN COUNT(a1.StudentPermID) 
    END)AS '504', 
    @Non504SPEDCount =(
    CASE 
     WHEN a1.STID NOT IN (SELECT DISTINCT t1.STID FROM #speds t1) THEN COUNT(a1.STID) 
     WHEN a1.StudentPermID NOT IN (SELECT DISTINCT t3.Permnum FROM #504 t3) THEN COUNT(a1.StudentPermID) 
    END) AS 'Non-504/Non-SPED', 
    @SPEDCount=(
    CASE 
     WHEN a1.STID IN (SELECT DISTINCT t2.STID FROM #speds t2) THEN COUNT(a1.STID) 
    END) AS 'SPED', 
    a1.STID, a1.StudentPermID as PERMNUM, COUNT('504'), COUNT('Non-SPED'), COUNT('SPED'), 
    SUM(@504Count + @Non504SPEDCount + @SPEDCount) AS 'Grand Total' 
    FROM #allStudents a1 
    GROUP BY a1.SCHYEAR, a1.LocationName, a1.GRADE, a1.[RACE/ETHNICITY], a1.STID, a1.StudentPermID 
    ORDER BY a1.SCHYEAR, a1.LocationName, a1.GRADE, a1.[RACE/ETHNICITY], a1.STID, a1.StudentPermID 
+0

あなたはとして '入れて試してみました<..> 'かっこの外側か? – potashin

+0

エイリアス名は、角括弧ではなく角括弧で指定します。しかし、この場合、エイリアス名は必要ありません。 – DineshDB

+0

あなたの声明は私を混乱させる。 '504 'のような奇妙な列名は' [] ''ではなく '' ''に属しています。 'col IN(SELECT DISTINCT ...)'は区別できません。値を割り当てる選択されたステーションはデータを出力できません。 –

答えて

0

は、このコードを試してみてください、

SELECT DISTINCT a1.SCHYEAR, a1.LocationName as LOCATIONNAME, a1.GRADE, a1.[RACE/ETHNICITY], 
    @504Count=(
    CASE 
     WHEN a1.StudentPermID IN (SELECT DISTINCT t4.Permnum FROM #504 t4) THEN COUNT(a1.StudentPermID) 
    END), 
    @Non504SPEDCount =(
    CASE 
     WHEN a1.STID NOT IN (SELECT DISTINCT t1.STID FROM #speds t1) THEN COUNT(a1.STID) 
     WHEN a1.StudentPermID NOT IN (SELECT DISTINCT t3.Permnum FROM #504 t3) THEN COUNT(a1.StudentPermID) 
    END), 
    @SPEDCount=(
    CASE 
     WHEN a1.STID IN (SELECT DISTINCT t2.STID FROM #speds t2) THEN COUNT(a1.STID) 
    END), 
    a1.STID, a1.StudentPermID as PERMNUM, COUNT('504'), COUNT('Non-SPED'), COUNT('SPED'), 
    SUM(@504Count + @Non504SPEDCount + @SPEDCount) AS 'Grand Total' 
    FROM #allStudents a1 
    GROUP BY a1.SCHYEAR, a1.LocationName, a1.GRADE, a1.[RACE/ETHNICITY], a1.STID, a1.StudentPermID 
    ORDER BY a1.SCHYEAR, a1.LocationName, a1.GRADE, a1.[RACE/ETHNICITY], a1.STID, a1.StudentPermID 
0

に必須ではありません

SELECT DISTINCT 
    a1.SCHYEAR, a1.LocationName as LOCATIONNAME, a1.GRADE, 
    a1.[RACE/ETHNICITY], 
    @504Count = (CASE 
        WHEN a1.StudentPermID IN (SELECT DISTINCT t4.Permnum FROM #504 t4) 
         THEN COUNT(a1.StudentPermID) 
       END), 
    @Non504SPEDCount = (CASE 
          WHEN a1.STID NOT IN (SELECT DISTINCT t1.STID FROM #speds t1) 
          THEN COUNT(a1.STID) 
          WHEN a1.StudentPermID NOT IN (SELECT DISTINCT t3.Permnum FROM #504 t3) 
          THEN COUNT(a1.StudentPermID) 
         END), 
    @SPEDCount = (CASE 
        WHEN a1.STID IN (SELECT DISTINCT t2.STID FROM #speds t2) 
         THEN COUNT(a1.STID) 
        END), 
    a1.STID, a1.StudentPermID as PERMNUM, @504Count as '504', 
    @Non504SPEDCount as 'Non-504/Non-SPED', @SPEDCount as 'SPED', 
    SUM(@504Count + @Non504SPEDCount + @SPEDCount) AS 'Grand Total' 
FROM 
    #allStudents a1 
GROUP BY 
    a1.SCHYEAR, a1.LocationName, a1.GRADE, a1.[RACE/ETHNICITY], a1.STID, 
    a1.StudentPermID 
ORDER BY 
    a1.SCHYEAR, a1.LocationName, a1.GRADE, a1.[RACE/ETHNICITY], a1.STID, 
    a1.StudentPermID 
+0

助けてくれてありがとう。私は最終的に私が持っていたALIASの問題で私のコードを修正したと思います。上記のコードを修正しました。 ただし、コードを実行しようとすると、次のエラーが発生します。 メッセージ141、レベル15、状態1、行122 変数に値を割り当てるSELECTステートメントは、データ取得操作と組み合わせて使用​​しないでください。 行122は、上のコードの最初の行にあるSELECT DISTINCT文です。ありがとう。 – Melinda

+0

SQL selectは、「データの取得」または「値の設定」の1つの機能を実行できます。しかし、あなたは一度に同時に機能するように努めています。ただそれを変更してください。 – DineshDB

+0

ありがとうDineshDB。しかし、私はあなたがそれをどのように変更しようとしているのか分かりません。私は試し続けます... – Melinda

関連する問題