0

明らかな間違いをしていると確信しているので、これはSQLの達人にとってもう1つの簡単な質問になると思います。これはすべてSQLServer2000(継承されたプロジェクト!)の場合です。

私は次のようなクエリがあります

   SELECT (SELECT Price1 from Table1) AS 'PriceOne', 
(SELECT Price2 From Table2) AS 'PriceTwo', 
PriceTwo * PriceOne AS 'Total'

ただし、これにより、PriceOneおよびPriceTwoの認識されない列のエラーが生成されます。このように列を掛けることができると思いますよね?

4

3 に答える 3

1

まず第一に、これらのサブクエリが常に 1 行だけを返すことを確認する必要があります。ここで、列名に関する特定の問題については、それらを別の名前でラップして、SELECTそのように使用する必要があります。

SELECT PriceOne, ProceTwo, PriceTwo * PriceOne AS 'Total'
FROM (  SELECT  (SELECT Price1 from Table1) AS 'PriceOne', 
                (SELECT Price2 From Table2) AS 'PriceTwo') AS A
于 2012-10-09T15:58:16.570 に答える
1

同じ SELECT コンテキストで列エイリアスを使用することはできません。試す:

SELECT (SELECT Price1 from Table1) AS 'PriceOne', 
(SELECT Price2 From Table2) AS 'PriceTwo', 
(SELECT Price1 from Table1) * (SELECT Price2 From Table2) AS 'Total'

または、クエリをサブクエリとして指定し、外部コンテキストで選択します。

SELECT PriceOne, PriceTwo, PriceTwo * PriceOne AS Total
FROM (SELECT (SELECT Price1 from Table1) AS 'PriceOne', 
         (SELECT Price2 From Table2) AS 'PriceTwo') x

Table1とはいえ、本当にそれぞれに1行しかないのか、Table2それとも本当にまったく違うことをするつもりなのか疑問に思います.

于 2012-10-09T15:58:24.240 に答える
0

質問を明確にする必要があると思います。Table1 と Table2 に複数の行がありますか? もしそうなら、何らかの結合基準を指定する必要があります。私は、デカルト結合を望んでいないと仮定しています。

ちょっと興味がありますが、なぜ価格を掛けるのですか? それは意味がありません。そして、結果を「Total」と呼びます。通常、total は掛け算ではなく足し算を意味します。

于 2012-10-09T16:03:45.067 に答える