2017-02-09 5 views
1

COL。 & B OREADY INSERT正しい文SQL

私のサンプルデータ:

A   B   K  P  M 
--   --   --  --  -- 
2   5      
3   5     

問合せ:

select 
    ([A] + [B]) AS [K], 
    ([A] * [B]) AS [P], 
    -- can I write like this? 
    ([P]-[K]) AS [M] 
    -- or must I write : 
    -- ([A]+[B]) - ([A]*[B]) /* sometimes the formula is very long 
from 
    TB 
+0

あなたに何を求めているのかはわかりません。たぶんあなたは本当の全体の数式と現在のクエリを表示することができますか? –

答えて

1

はいこれを使用してサブクエリを記述できます。以下のクエリを確認してください。

select *,([P]-[K]) as M 
    From 
    (
    select A,B,([A]+[B]) AS [K], ([A]*[B]) AS [P], 
    FROM TB 
    )a 
1

あなたの質問は少し薄いですが、1つのトリックは、あなたはの繰り返しの部分を書き出す避けるために使用することができます数式は、副問合せ内のさまざまな部分を「定義」し、その定義された別名を外部問合せで使用することです。このような何か:もちろん

SELECT t.[K] - t.[P] AS some_value 
FROM 
(
    SELECT ([A]+[B]) AS [K], 
      ([A]*[B]) AS [P] 
    FROM yourTable 
) t 

、あなたはCTEにサブクエリを置くが、説明の目的のために、私は私が上記与えているものを好みます。

編集:

@juergenは通常、全体的なクエリが非常に遅くなり、このサブクエリのトリックを使用して、指摘したように。したがって、サブクエリを使用して簡潔にすることは、パフォーマンスが低下する可能性があるかどうかを判断する必要があります。

+1

BTWサブクエリは、クエリの速度を遅くする可能性があります。 –

+0

@juergendはい、私はこれを知っていましたが、これはOPの焦点だったとは思わなかった。 –

+0

十分に公正ですが、私はデータベースを照会するときに常に速度が問題だと思います。 –

0

同じSELECT文では、列エイリアスを使用できません。これは外部クエリ選択文で使用できます。

select [A],[B],[K],[P],[K]-[P] AS [M] FROM 
(
select [A],[B], 
([A]+[B]) AS [K], 
([A]*[B]) AS [P] 
) AS A 
関連する問題