2017-06-29 2 views
0

私はこのようなselect文を持っている場合...結果1,2,3,4,5を返し2つのselect文の結果を乗算することはできますか?

SELECT col1 FROM table WHERE col2=1 

そして、このような別のselect文...結果6,7,8,9,10を返す

SELECT col1 FROM table WHERE col2=2 

6,14,24,36,50の最終結果セットが返されるように、これらの2つのクエリの結果を乗算する方法はありますか?

私はこのような単純なことを試みました。

SELECT (SELECT col1 FROM table WHERE col2=1) * (SELECT col1 FROM table WHERE col2=2) 

しかし、それはうまくいかないようです。

違いがある場合、私はSqliteを使用していますが、値の型はINTALではなくREALです。

+1

あなたがしたいことはできません。 SQLテーブルは、*順序付けられていない*集合を表します。したがって、表示される値は順序付けられていません。乗算を行う行の関係を定義する方法が必要です。 –

+0

@ GordonLinoffステートメントにORDER BYを追加するとどうなりますか? – Tester101

+1

質問を編集し、サンプルデータと希望する結果を表示してください。 –

答えて

1
DECLARE @Table1 TABLE (thing real) 
DECLARE @Table2 TABLE (anotherThing real) 

INSERT @Table1 (thing) 
VALUES (1), (2), (3), (4), (5) 

INSERT @Table2 (anotherThing) 
VALUES (6), (7), (8), (9), (10) 
; 

SELECT  T.thing * TT.anotherThing AS Multi 
FROM  (
       SELECT T.thing 
       ,  (
          SELECT COUNT(1) RN 
          FROM @Table1 AS T2 
          WHERE T2.thing <= T.Thing 
         ) RN 
       FROM  @Table1 AS T 
      )AS T 
INNER JOIN (
       SELECT  TT.anotherThing 
       ,   (
           SELECT COUNT(1) RN 
           FROM @Table2 AS T2 
           WHERE T2.anotherThing <= TT.anotherThing 
          ) RN 
       FROM  @Table2 AS TT 
      ) TT 
     ON TT.RN = T.RN 

結果:

+-------+ 
| Multi | 
+-------+ 
|  6 | 
| 14 | 
| 24 | 
| 36 | 
| 50 | 
+-------+ 

例はおそらくsqliteのでは動作しません、私はSQLサーバ内それを書きました。 Thisは、それがsqliteで動作することを示しています。

関連する問題