2016-04-13 23 views
0

サブクエリには非常に新しく、助けが必要です。SELECT計算内のSQLサブクエリ

私は単一のデータベースから照会したいと思います。そのクエリの中で、私はそのデータベース(SUBQとTOTAL)で2つの変数から変数を計算したいと思います。私の問題はこれです:私のSUBQ変数は、クエリ全体に採用されるものの上にWHERE制約の追加セットの対象となる必要があります。以下の簡略化されたサンプルコード:

create table [blah] 
    as select date_part('YEAR',DATE) as Orig_Year, 
      sum([SUBQ variable])/sum(TOTAL) as UD_Rate 
     from [database] 
     where [full query requirements] 
     group by date_part('YEAR',DATE) 

FROMステートメントでサブクエリを指定することで、その計算内でサブクエリを作成しようとしました。したがって、たとえば、

   select date_part('YEAR',DATE1) as Orig_year, 
        sum(a.SUBQ)/sum(b.TOTAL) as UD_Rate 
      from database b, 
        (select SUBQ 
        from database 
        where DATE2 is not null and 
         months_between(DATE3,DATE2) <= 100 and 
         VALUE1 in ('A','B')) a 
      where VALUE2 between 50.01 and 100 
      group by date_part('YEAR',DATE1) 

私はここで私の考えと正しい軌道に乗っていますか?私はまだ機能的な質問に近いところにいなくて、オンラインで同様の質問を見つけるのはほとんど運がなかったので、私は手を振ってあなたに来ているところです。私はそれらについてほとんど知っていませんが、SUBQ値でVIEWを作成し、より広範なクエリとマージする方が適切でしょうか?

このリクエストで私を助けてくれる人のためのパイとケーキの考え。ありがとうございました。

+0

はそれが役立つだろうあなたのメインクエリ内のテーブルを使用すると、その後subqueryを使用 –

+0

あなたはそれを単純化して、クエリーを構築することはできません。私たちにdbスキーマ、サンプルデータ、期待される結果を示してください。 \t [** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t [**スタート**] http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)質問品質を向上させ、より良い回答を得る方法を学ぶことができます。 –

+0

十分に公正です。追加中... –

答えて

1

私は、ウィンドウ関数内に条件集計をしたいと思うと思います。このようなもの:

select sum(case when [subquery requirements] then t.subq else 0 end)/sum(t.Total) 
from t; 

私はこれがあなたが探しているものだと確信しています。あなたのcreate tableの面では:

select date_part('YEAR',DATE) as Orig_Year, 
     sum(case when ?? then Total else 0 end)/sum(TOTAL) as UD_Rate 
    from [database] 
    where [full query requirements] 
    group by date_part('YEAR', DATE); 

私は、比較対象の列がwhenで条件に従う、Totalであることを推測しています。その後、

+0

これは良い提案であり、おそらく私はそれを思い描いていました。私はこれを撃つと、それがどうなるか見てみましょう。ありがとうございました。 –

+0

これは完全に機能しました。 –

0

使用する一般的な表式:

-- Define the CTE expression name and column list. 
WITH subquery (Orig_year, UD_Rate) 
AS 
-- Define the CTE query. 
(
    select date_part('YEAR',DATE1) as Orig_year, 
        sum(a.SUBQ)/sum(b.TOTAL) as UD_Rate 
      from database b, 
        (select SUBQ 
        from database 
        where DATE2 is not null and 
         months_between(DATE3,DATE2) <= 100 and 
         VALUE1 in ('A','B')) a 
      where VALUE2 between 50.01 and 100 
      group by date_part('YEAR',DATE1) 
) 

そして、あなたは、サブクエリと完全なクエリの要件を示すことができる場合は、