Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将两个查询合并在一行中显示_Sql Server - Fatal编程技术网

Sql server 将两个查询合并在一行中显示

Sql server 将两个查询合并在一行中显示,sql-server,Sql Server,我正在使用下面的代码查找信用卡和现金的销售额,当前输出如下所示,但我希望在单行中获得信用卡和现金销售额 电流输出: 预期产出: SELECT CONVERT(VARCHAR(10), CreateDate, 103) DT,SUM(AMOUNT),NULL FROM JnlDetails WHERE JnlDetails.CreateDate > '2021-05-01' AND ACCOUNTID = '000153200101' GROUP BY CONVERT(VARCHAR(

我正在使用下面的代码查找信用卡和现金的销售额,当前输出如下所示,但我希望在单行中获得信用卡和现金销售额

电流输出:

预期产出:

SELECT CONVERT(VARCHAR(10), CreateDate, 103) DT,SUM(AMOUNT),NULL FROM JnlDetails WHERE  JnlDetails.CreateDate > '2021-05-01' 
AND ACCOUNTID = '000153200101'
GROUP BY CONVERT(VARCHAR(10), CreateDate, 103)
UNION ALL
SELECT CONVERT(VARCHAR(10), CreateDate, 103) DT,NULL,SUM(AMOUNT) FROM JnlDetails WHERE  JnlDetails.CreateDate > '2021-05-01' 
AND ACCOUNTID = '000153200201'
GROUP BY CONVERT(VARCHAR(10), CreateDate, 103)
ORDER BY DT


在没有工会的情况下,是否还有其他选择可以实现这一目标?这两个信息(卡和销售额)都在同一个表中,基于accountid,我们可以拆分。

使用
大小写表达式
可以有条件地对值求和

select Convert(varchar(10), CreateDate, 103) DT,
    Sum (case when ACCOUNTID = '000153200101' then AMOUNT end) as Cash,
    Sum (case when ACCOUNTID = '000153200201' then AMOUNT end) as Card
from JnlDetails
where JnlDetails.CreateDate > '2021-05-01' 
    and ACCOUNTID in ('000153200101','000153200201')
group by Convert(varchar(10), CreateDate, 103)

使用
大小写表达式
可以
有条件地求和

select Convert(varchar(10), CreateDate, 103) DT,
    Sum (case when ACCOUNTID = '000153200101' then AMOUNT end) as Cash,
    Sum (case when ACCOUNTID = '000153200201' then AMOUNT end) as Card
from JnlDetails
where JnlDetails.CreateDate > '2021-05-01' 
    and ACCOUNTID in ('000153200101','000153200201')
group by Convert(varchar(10), CreateDate, 103)

您可以使用
大小写表达式
感谢您的回复。如果可能的话,你能详细解释一下吗?问题并提供一个,即
创建
表或其他相关对象的语句(粘贴文本、不使用图像、不链接到外部站点),
插入样本数据的语句(dito)以及以表格文本格式显示该样本数据的所需结果,要从
datetime
中删除时间,只需将其转换为
date
@Always学习
AccountId
值的不同之处-请注意,它们对于每个联合查询都是不同的。您可以使用
大小写表达式
,谢谢您的回复。如果可能的话,你能详细解释一下吗?问题并提供一个,即
创建
表或其他相关对象的语句(粘贴文本、不使用图像、不链接到外部站点),
插入样本数据的语句(dito)以及以表格文本格式显示该样本数据的所需结果,要从
datetime
中删除时间,只需将其转换为
date
@始终学习
AccountId
值是区别所在-请注意,对于每个联合查询,它们是不同的。当我尝试上述代码时,它会显示以下错误
列“JnlDetails.CreateDate”在选择列表中无效,因为它不是包含在聚合函数或GROUP BY子句中,该部分在您的查询中保持不变-您确定已包含GROUP BY吗?对不起,这是我的错误。。它工作得很好。非常感谢您的帮助。我是这个stackflow的新手,我想把这个答案和其他论坛一样标记为最佳答案。是否有任何选项?当我尝试上述代码时,确实可以这样做,因为它在选择列表中显示以下错误
列“JnlDetails.CreateDate”无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中
该部分在您的查询中保持不变-您确定已包含
GROUP BY
I吗对不起,这是我的错。。它工作得很好。非常感谢您的帮助。我是这个stackflow的新手,我想把这个答案和其他论坛一样标记为最佳答案。有什么选择吗?当然可以