【问题标题】:SQL Nested Multiple Select StatementSQL 嵌套多选语句
【发布时间】:2014-04-20 02:12:27
【问题描述】:

我正在尝试创建一个包含多个嵌套选择语句的嵌套 SQL 语句,用于在 excel vba 中导入记录集。

我想做的是创建类似的东西:

SELECT
    N.LimitN,
    Sum(N.amountN),
    Sum(N1.amountN1)
FROM (
    SELECT year as yearN, Sum(amount) as amountN, limit as limitN
    FROM table1
    WHERE year = 2013
    GROUP BY year, limit) as N
JOIN (
    SELECT year as yearN1, Sum(amount) as amountN1, limit as limitN1
    FROM table1
    WHERE year = 2014
    GROUP BY year, limit) as N1
ON N.LimitN = N1.LimitN1
GROUP BY N.LimitN
ORDER BY N.LimitN;

如果我的原始数据是这样的:

Year       Amount        Limit
2013        100           20
2013         90           30
2013        120           40
2013          5           20
2013        100           30
2013        105           40
2013        150           50
2014        115           20
2014         50           30
2014         95           40
2014        110           50
2014         30           20

我的结果表/记录集将是这样的:

Limit     AmountN (i.e. 2013)   Amount N1 (i.e. 2014)
 20               105                    145
 30               190                     50
 40               225                     95
 50               150                    110

提前致谢

彼得

【问题讨论】:

  • 到目前为止您的尝试有什么问题?

标签: sql vba select nested recordset


【解决方案1】:

感觉你的查询有点过于复杂了,你想要的只是amount 的年度总和,按limit 分组。这可以使用CASE 来完成;

SELECT 
  limit, 
  SUM(CASE WHEN year=2013 THEN amount ELSE 0 END) amountN,
  SUM(CASE WHEN year=2014 THEN amount ELSE 0 END) amountN1
FROM myTable
GROUP BY limit
ORDER BY limit;

An SQLfiddle to test with.

(如果我们在这里谈论 Access,您需要使用 IIF 而不是 CASE

【讨论】:

  • B-E-A-UTIFUL!我什至没有想到要使用 CASE WHEN。谢谢约阿希姆
猜你喜欢
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多