sql - 如何在 SQL 中进行列式和行式操作

标签 sql transformation data-manipulation

我对 SQL 查询中的行式和列式操作有疑问。我将使用以下示例数据表来演示我的问题:

Person           Income      Hours worked   Day
A                100         10             1
A                200         9              2
B                300         8              1 
B                400         7              2
C                500         6              1
C                600         5              2

我想编写一个查询,从中获取 (A + B) 和 C 的总收入、工作小时数和每小时收入。即:

Person           Income      Hours worked   Income / Hour
A + B            1000        34             1000 / 34
C                1100        11             1100 / 11

我如何在 SQL 中执行此操作?

非常感谢!

最佳答案

您可以在子查询中使用 UNION ALL

SELECT Person, Income, [Hours worked], [Income / Hour]    
FROM (
  SELECT 'A + B' AS Person,
          SUM(Income) AS Income,
          SUM([Hours worked]) AS [Hours worked],
          SUM([Day]) AS [Hours worked]
  FROM dbo.TableName
  WHERE Person IN('A', 'B')           

  UNION ALL

  SELECT 'C' AS Person,
          SUM(Income) AS Income,
          SUM([Hours worked]) AS [Hours worked],
          SUM([Day]) AS [Hours worked]
  FROM dbo.TableName
  WHERE Person = 'C'
) x

如果你想排序,你可以在外部查询上应用 ORDER BY

关于sql - 如何在 SQL 中进行列式和行式操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41940633/

相关文章:

php - 同时查询的数据不一致

javascript - JavaScript 中的 SVG 转换

r - 如何在 R 中拆分 'CHR' 列?

mysql - SQL 数字格式

sql - 为什么我无法获取@@rowcount 值?

MYSQL-自引用外键

matlab - 将指针移动到对象上 (MATLAB)

用 NA 替换 integer(0)

将 CSV 从 github 读入 R

javascript - 使用 JavaScript 从数组中的字符串中删除所有字母字符和前导零