0

最終クエリの with 句内でクエリの出力を csv または何らかのテキスト ファイルとして取得しようとしています。クエリへのアクセス権しかありません。このデータベースのテーブルを作成することはできません。データセットに対していくつかの計算を行う一連のクエリ、前のセットに対して計算を行う別のクエリのセット、および最終的なセットに対して計算を行う別のクエリがあります。最初の 2 つの結果は実際には最後の 1 つにあるため、すべてを 3 つの個別のクエリとして実行したくありません。

WITH
    Q1 AS(
        SELECT col1, col2, col3, col4, col5, col6, col7
        FROM table1
    ),
    Q2 AS(
        SELECT AVG(col1) as col1Avg, MAX(col1) as col1Max, col2, col3,col4
        FROm Q1
        GROUP BY col2, col3, col4
    )
SELECT 
    AVG(col1AVG), col3
FROM
    Q2
GROUP BY col3

Q1、Q2、および最後の select ステートメントの結果を、できれば 3 つの csv ファイルにしたいのですが、すべてを 1 つの csv ファイルに収めることができます。これは可能ですか?

ありがとう!

編集: 明確にするために、クエリの列は大きく異なります。私は間違いなく、最初のクエリから 2 番目のクエリよりも多くの列を取得しています。これをより明確にするために、上記のコードを少し編集しました。

4

1 に答える 1

1

すべての結果を結合するには、UNION ALL を使用しますが、列の数とデータ型が一致している必要があります。

select col1, col2, col2
from   blah
union all
select col1, col2, col2
from   blah2
union all
... etc

もちろん、そこにあるCTEを参照できます...

with
  cte_1 as (
    select ... from ...),
  cte_2 as (
    select ... from ... cte_1),
  cte_3 as (
    select ... from ... cte_2)
select col1, col2, col2
from   cte_1
union all
select col1, col2, col2
from   cte_2
union all
select col1, col2, col2
from   cte_3

最終出力がcsvの場合、そこに複数の行フォーマットがあるように見えます-チェックサム? その場合、すべてを結合するクエリで、各クエリのすべての列を 1 つの文字列に結合したい場合があります...

with
  cte_1 as (
    select ... from ...),
  cte_2 as (
    select ... from ... cte_1),
  cte_3 as (
    select ... from ... cte_2)
select col1||','||col2||','||col2
from   cte_1
union all
select col1||','||col2
from   cte_2
union all
select col1
from   cte_3
于 2013-05-10T13:28:43.273 に答える