14

この形式で正しく機能するT-SQLスクリプトがあります

SELECT  columnA
        AS
        'numbers'
FROM    tableA
WHERE   clause

このスクリプトは、整数の数値と呼ばれる1つの列として表示されます。これらを合計したいと思います。

上記の行を「スクリプト」と呼んで、次の設定を試しました

SELECT  SUM(numbers)
FROM    (
            script
        )

selectからselectcount(*)を読み取ると、これは機能すると思いましたが、機能しません。「構文が正しくありません」というメッセージが表示され続けます。

それが重要かどうかはわかりませんが、ここではcolumnAという名前がSELECTステートメントによって作成されています。

4

3 に答える 3

21

サブクエリにエイリアスが必要です。

SELECT  SUM(numbers)
FROM    
(
    script  -- your subquery will go here
) src   -- place an alias here

したがって、完全なクエリは次のようになります。

select sum(numbers)
from
(
   SELECT  columnA  AS numbers
   FROM    tableA
   WHERE   clause
) src
于 2012-11-06T18:12:03.207 に答える
8

あなたが望むことを達成するために何の問題も全くありません。エンティアクエリは表示されませんが、最も一般的な問題は、ネストされたselectステートメントにエイリアスを追加するのを忘れていることです。完璧に機能するこのサンプルを見てください:

select sum(col1) as sum1 
from ( select col1 
        from ( select 1 col1 union all select 2 union all select 3 ) tmp 
     ) tmp2

OPによると、これが最後のクエリです。

SELECT  SUM(numbers)
FROM    (
            SELECT  columnA
                    AS
                   'numbers'
              FROM    tableA
             WHERE   clause
        ) tmp
于 2012-11-06T18:13:32.877 に答える
0
SELECT SUM(x.ColumnA) as ColumnName FROM
(SELECT ColumnA FROM TableName) x

括弧内のクエリではORDER句を使用できないことを覚えておいてください。

order句を使用すると、次のエラーが発生します。

メッセージ1033、レベル15、状態1、行30 ORDER BY句は、TOPまたはFOR XMLも指定されていない限り、ビュー、インライン関数、派生テーブル、サブクエリ、および一般的なテーブル式では無効です。

于 2020-06-10T13:51:53.443 に答える