如何将列中的所有行合并为两个连接表?

时间:2014-12-30 12:13:33

标签: mysql sql sql-server select group-by

SELECT movies.name, 
       general.[date], 
       Sum(general.price) AS GeneralPrice
FROM movies 
     INNER JOIN general ON movies.IDmovie=general.IDmovie
GROUP BY movie.name, general.[date]
HAVING SUM(((general.[date])=#8/11/2014#));

所以这是我的查询。

这是我的表格。

TABLE 1 - MOVIES:

IDmovie | Name 
--------+------------
1       | Something1
2       | Something2
3       | Something3
4       | Something4


TABLE 2 - GENERAL

IDmovie | Date     | Price 
--------+----------+---------
1       | 11.08.14 | $10 
2       | 14.08.14 | $12 
3       | 12.08.14 | $18,60 
4       | 11.08.14 | $20 
5       | 19.08.14 | $13 

所以你怎么看我的查询我得到电影的名称和所有电影的价格与日期8.11.14并将他们放入第三个表。我的问题是如何汇总所有价格:

| Date     | Price  | General Price 
+----------+--------+--------------
| 11.08.14 | $10    | $40,60 
| 11.08.14 | $12    |
| 11.08.14 | $18,60 |

我应该在查询中添加什么内容?

1 个答案:

答案 0 :(得分:0)

DECLARE @movies TABLE
  (
     IDmovie INT,
     Name    VARCHAR(50)
  )

INSERT INTO @movies
VALUES      (1,
             'Something1'),
            (2,
             'Something2'),
            (3,
             'Something3'),
            (4,
             'Something4')

DECLARE @GENERAL TABLE
  (
     IDmovie INT,
     [Date]  DATE,
     Price   FLOAT
  )

INSERT INTO @GENERAL
VALUES      (1,
             '11/aug/14',
             10),
            (2,
             '14/aug/14',
             12),
            (3,
             '11/aug/14',
             18.60),
            (4,
             '11/aug/14',
             20),
            (5,
             '19/aug/14',
             13)

SELECT *
FROM   @movies

SELECT *
FROM   @GENERAL

SELECT g.[date],
       g.Price,
       (SELECT sum(g1.Price)
        FROM   @GENERAL g1
        WHERE  g1.Date = g.Date) AS general_price
FROM   @movies m
       INNER JOIN @GENERAL g
               ON m.IDmovie = g.IDmovie
GROUP  BY g.[date],
          g.Price
HAVING g.[date] = '8/11/2014' 
相关问题