sql - 查询具有不同条件的多个列
问题描述
我有一个包含date
列和其他 3 个不同列的表:X
、Y
、Z
。
我想要获取上个月的 , 和date
列X
所有以前日期的总和。Y
z
这是我处理的查询
SELECT date,
x,
y,
(
SELECT z
FROM Table
WHERE date < DATEADD(DAY, -(DAY(GETDATE())), GETDATE())
)
FROM Table
WHERE date BETWEEN DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 1, 0) AND
DATEADD(DAY, -(DAY(GETDATE())), GETDATE());
date | X | Y | Z
-----------+---+---+---
2019-08-01 | 8 | 8 | 12
,且仅适用于上个月和date
所有时间的总和 (1+1+2+8=12)X
Y
Z
我在 Microsoft SQL Server Management Studio 中收到以下错误:
子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
解决方案
这个结果是你想要的吗?
SELECT date, x, y, z FROM Table
WHERE date BETWEEN DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 1, 0)
AND
DATEADD(DAY, -(DAY(GETDATE())), GETDATE());
UNION ALL
SELECT date,x,y,z FROM Table WHERE date < DATEADD(DAY, -(DAY(GETDATE())), GETDATE()))
正如所有其他人所建议的那样,提供样本数据和预期输出会更有帮助。
推荐阅读
- ruby-on-rails - MacOs Catalina 没有安装最新的 2.7.2 Ruby 版本
- java - java.sql.SQLException:未知系统变量“query_cache_size”,尽管拥有最新的 JDBC
- c# - 使用 AngleSharp 跟随重定向到本地主机
- spring - 如何使用 xml 配置在 Spring 2.5 Web 应用程序中配置两封电子邮件
- sql - NVL 和 GROUP BY 子句的问题
- powershell - *在* Enter-PSSession 之后将文件复制到本地计算机
- apache-spark - Apache Spark - 如何在事件时间使用窗口操作设计自己的聚合
- docker - 获取 x509:从 jenkins(dind 代理)与 docker 注册表交谈时由未知权威签署的证书
- mysql - 为什么双引号会影响比较日期时间的结果?
- javascript - 为什么当输入是文本时 document.getelementbyid().value 对我不起作用