2011-02-01 28 views
0
SELECT 
    MyColumn = 'something' 
FROM table 
WHERE MyColumn == 'something' 

WHERE句にMyColumnを使用することはできますか?WHERE句のSQL Server結果列

EDIT:

ここでのフルクエリ:

select TOP 10    
    PremiumYTDCurrent=Sum(CASE WHEN 
    AASI.Inv_Acctcur>='201101' 
    and AASI.Inv_Acctcur<='201102' 
    THEN (AASI.Inv_Premium)*R.[Percent] 
    ELSE 0 END), 

    PremiumYTDPrevious=Sum(CASE WHEN 
    AASI.Inv_Acctcur>='201001' 
    and AASI.Inv_Acctcur<='201002' 
    THEN (AASI.Inv_Premium)*R.[Percent] 
    ELSE 0 END), 

    R.STAFF, L.Description, L.LINE_OF_BUSINESS 

from AAS_Invoice AASI,Invoice I,Revenue_Tracking R, Policy P, Line_Of_Business L 
where I.Invoice_No=convert(Char,Convert(int,AASI.Inv_Entry_Num)) 
and I.Invoice=R.Invoice 
and I.POLICY=P.POLICY 
and L.LINE_OF_BUSINESS=P.LINE_OF_BUSINESS 
and R.Organization IN (SELECT ST.ORGANIZATION FROM Staff ST WHERE ST.STAFF=14407) 
and R.Staff=14407 
and R.Activity_type='Broker' 
and R.[Percent]>0 

and PremiumYTDCurrent != 0 

group by R.STAFF, L.Description, L.LINE_OF_BUSINESS 
order by PremiumYTDCurrent DESC, PremiumYTDPrevious DESC, average_policy DESC 
+0

MyColumnがデータベースに存在する限り上記のクエリを実行できます。 –

+0

MyColumnはユーザーによって定義され、dbには存在しません –

+2

存在しない場合は、それを使用することはできません。 – gbn

答えて

1

あなたはwhere句で列を使用することはできません。代わりに式を使用します。

and Sum(CASE WHEN 
    AASI.Inv_Acctcur>='201101' 
    and AASI.Inv_Acctcur<='201102' 
    THEN (AASI.Inv_Premium)*R.[Percent] 
    ELSE 0 END) <> 0 

編集1 は、SUM句に気付きませんでした。 注文後にHAVING句として追加してください。

having Sum(CASE WHEN 
    AASI.Inv_Acctcur>='201101' 
    and AASI.Inv_Acctcur<='201102' 
    THEN (AASI.Inv_Premium)*R.[Percent] 
    ELSE 0 END) != 0 
+0

あなたは私の関連する質問をご覧ください。 http://stackoverflow.com/questions/13594741/update-sql-server-xml-column-using-xquery –

0

あなたは、ネストされた声明、という恐ろしく簡単な例で、例えば、SQLをラップできます。

SELECT MyMadeUpColumnName, col2, AnotherMadeUpColumn FROM (
    SELECT SUM(sillycolumn) AS 'MyMadeUpColumnName', col2 FROM table GROUP BY col2 
) AS t 
WHERE t.AnotherMadeUpColumn <> 0 

あなたが(再)派生テーブルで定義されるカラム名は、実際の列になります親セレクトの名前。

関連する問題