SQL Multiple从同一表中选择

ly

我有一个包含三列的事务表:transactionType,amount和transactionTimestamp。transactionType列接受1(现金),2(支票)或3(信用卡)的值。

我需要显示每天每个transactionType的总金额。我可以为每个transactionType使用单独的查询轻松地做到这一点:

    SELECT SUM(amount) AS cashTotal, dateadd(DAY, 0, datediff(DAY, 0, transactionTimestamp)) AS transactionDay
    FROM TransactionRecords
    WHERE transactionType = 1
    GROUP BY dateadd(DAY, 0, datediff(DAY, 0, transactionTimestamp));

    SELECT SUM(amount) AS checkTotal, dateadd(DAY, 0, datediff(DAY, 0, transactionTimestamp)) AS transactionDay
    FROM TransactionRecords
    WHERE transactionType = 2
    GROUP BY dateadd(DAY, 0, datediff(DAY, 0, transactionTimestamp));

    SELECT SUM(amount) AS cardTotal, dateadd(DAY, 0, datediff(DAY, 0, transactionTimestamp)) AS transactionDay
    FROM TransactionRecords
    WHERE transactionType = 3
    GROUP BY dateadd(DAY, 0, datediff(DAY, 0, transactionTimestamp));

但是我需要做的是在一个查询中进行。我尝试将上述内容合并为一个,如下所示:

SELECT 
        (SELECT SUM(amount) FROM TransactionRecords WHERE transactionType = 1 GROUP BY dateadd(DAY, 0, datediff(DAY, 0, transactionTimestamp))) AS cashTotal, 
        (SELECT SUM(amount) FROM TransactionRecords WHERE transactionType = 2 GROUP BY dateadd(DAY, 0, datediff(DAY, 0, transactionTimestamp))) AS checkTotal,
        (SELECT SUM(amount) FROM TransactionRecords WHERE transactionType = 3 GROUP BY dateadd(DAY, 0, datediff(DAY, 0, transactionTimestamp))) AS cardTotal,
        dateadd(DAY, 0, datediff(DAY, 0, transactionTimestamp)) AS transactionDay
    FROM TransactionRecords
    GROUP BY dateadd(DAY, 0, datediff(DAY, 0, transactionTimestamp));

但这只会导致“子查询返回的值大于1”的错误。而且我感觉这不是应该怎么做。感谢您的任何建议。

编辑:我应该澄清一点,我试图输出如下结果:

----------------------------------------------------
cashTotal | checkTotal | cardTotal | transactionDay
----------------------------------------------------
1000      | 1000        | 1000      | date
0         | 500         | 0         | date
----------------------------------------------------

每行显示该特定日期的每个transactionType的总金额。

编辑:编辑了一些详细信息以删除敏感信息。

萨加斯

只需对以下条件使用条件聚合CASE EXPRESSION

SELECT 
        SUM(CASE WHEN paymentType = 1 THEN amount ELSE 0 END) as cashTotal,
        SUM(CASE WHEN paymentType = 2 THEN amount ELSE 0 END) as chequeTotal,
        SUM(CASE WHEN paymentType = 3 THEN amount ELSE 0 END) as cardTotal,
        dateadd(DAY, 0, datediff(DAY, 0, transactionTimestamp)) AS transactionDay
    FROM PaymentRecords
    GROUP BY dateadd(DAY, 0, datediff(DAY, 0, transactionTimestamp));

虽然这一行看起来很奇怪

dateadd(DAY, 0, datediff(DAY, 0, transactionTimestamp))

您是要删节日期时间吗?如果是这样,请将其替换为:

CAST(transactionTimestamp as DATE)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从同一表中选择特定的SQL

来自分类Dev

SQL:从同一表中选择列

来自分类Dev

SQL Server:如何使用if else语句从同一表中选择不同的数据

来自分类Dev

SQL从同一表中选择两个最大行,并与第三个表连接

来自分类Dev

SQL从同一表中选择两个最大行,并与第三个表联接

来自分类Dev

SQL选择同一表上的多个条件

来自分类Dev

SQL选择联合同一表

来自分类Dev

如何从表中选择具有同一表属性唯一值的记录?请回答有关oracle sql plus的问题

来自分类Dev

SQL查询从一个表中选择不在另一表中的行

来自分类Dev

SQL在同一表上的关系

来自分类Dev

来自同一表的SQL连接

来自分类Dev

SQL:遍历同一表

来自分类Dev

同一表中的SQL操作

来自分类Dev

Oracle SQL在同一表的多个表上选择null

来自分类Dev

MySQL在同一表中选择

来自分类Dev

选择同一表关系中的所有父级或子级SQL Server

来自分类Dev

如果满足同一表中的条件,则为SQL选择值

来自分类Dev

选择同一表关系中的所有父级或子级SQL Server

来自分类Dev

SQl查询同一表中不同条件的多个选择语句

来自分类Dev

SQL Server:选择并添加到同一表的新列

来自分类Dev

SQL从一个表中选择两列,再从另一表中的列转换

来自分类Dev

SQL使用一个表中的行数据从另一表中的特定列中选择数据

来自分类Dev

SQL:通过3列选择结果过滤同一表中的多列来选择表中的行

来自分类Dev

使用where子句在同一表上执行SQL Multiple Joins

来自分类Dev

SQL-从表获取并与同一表连接

来自分类Dev

为什么删除语句到表,将选择语句锁定到同一表-SQL Server

来自分类Dev

SQL:查询同一表中的一列

来自分类Dev

SQL比较同一表中的两列,并在另一表中更新

来自分类Dev

比较SQL Server中同一表的列

Related 相关文章

  1. 1

    从同一表中选择特定的SQL

  2. 2

    SQL:从同一表中选择列

  3. 3

    SQL Server:如何使用if else语句从同一表中选择不同的数据

  4. 4

    SQL从同一表中选择两个最大行,并与第三个表连接

  5. 5

    SQL从同一表中选择两个最大行,并与第三个表联接

  6. 6

    SQL选择同一表上的多个条件

  7. 7

    SQL选择联合同一表

  8. 8

    如何从表中选择具有同一表属性唯一值的记录?请回答有关oracle sql plus的问题

  9. 9

    SQL查询从一个表中选择不在另一表中的行

  10. 10

    SQL在同一表上的关系

  11. 11

    来自同一表的SQL连接

  12. 12

    SQL:遍历同一表

  13. 13

    同一表中的SQL操作

  14. 14

    Oracle SQL在同一表的多个表上选择null

  15. 15

    MySQL在同一表中选择

  16. 16

    选择同一表关系中的所有父级或子级SQL Server

  17. 17

    如果满足同一表中的条件,则为SQL选择值

  18. 18

    选择同一表关系中的所有父级或子级SQL Server

  19. 19

    SQl查询同一表中不同条件的多个选择语句

  20. 20

    SQL Server:选择并添加到同一表的新列

  21. 21

    SQL从一个表中选择两列,再从另一表中的列转换

  22. 22

    SQL使用一个表中的行数据从另一表中的特定列中选择数据

  23. 23

    SQL:通过3列选择结果过滤同一表中的多列来选择表中的行

  24. 24

    使用where子句在同一表上执行SQL Multiple Joins

  25. 25

    SQL-从表获取并与同一表连接

  26. 26

    为什么删除语句到表,将选择语句锁定到同一表-SQL Server

  27. 27

    SQL:查询同一表中的一列

  28. 28

    SQL比较同一表中的两列,并在另一表中更新

  29. 29

    比较SQL Server中同一表的列

热门标签

归档