2017-06-29 249 views
0

如果我有这样的select语句...是否有可能将两个select语句的结果相乘?

SELECT col1 FROM table WHERE col2=1 

它返回的结果1,2,3,4,5

而且像这样的另一个select语句...

SELECT col1 FROM table WHERE col2=2 

它会返回结果6,7,8,9,10

有没有办法将这两个查询的结果相乘,以便返回最终结果集6,14,24,36,50

我试过这样简单的事情。

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

但这似乎没有工作。

如果它有所作为,我使用Sqlite,值类型是REAL而不是INTEGER。

+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 Server写的。 This显示它适用于sqlite。

相关问题