Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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

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_Sql Server - Fatal编程技术网

选择中的虚拟列,该虚拟列将用SQL Server中的另一个选择填充此列

选择中的虚拟列,该虚拟列将用SQL Server中的另一个选择填充此列,sql,sql-server,Sql,Sql Server,如何使用虚拟列创建选择,而此列又被另一个选择填充 可能吗 例如: SELECT p.id, p.nom, amount FROM person amount = SUM(SELECT ar.amount FROM amount_r ar WHERE ar.id_person = p.id) 您正在寻找相关子查询吗 SELECT p.id, p.nom, SUM(SELECT ar.amount FROM amount_r ar WHERE ar.id_pe

如何使用虚拟列创建选择,而此列又被另一个选择填充

可能吗

例如:

SELECT 
    p.id, p.nom, amount 
FROM 
    person

amount = SUM(SELECT ar.amount FROM amount_r ar WHERE ar.id_person = p.id)

您正在寻找相关子查询吗

SELECT p.id, p.nom,
       SUM(SELECT ar.amount FROM amount_r ar WHERE ar.id_person =p.id) as amount
FROM person p;

这是您的查询,您可以添加任意数量的附加列。重要的是,你能够加入你的
sum(amount)


您可以使用如下子查询:

SELECT  p.id,
        p.nom, 
        ISNULL((SELECT SUM(ar.amount)
                FROM amount_r ar 
                WHERE ar.id_person = p.id
                ),0)
FROM person as p
但是,这将是最好的方式,您可以通过以下方式使用group by:

SELECT  p.id,
        p.nom, 
        SUM(IIF(ar.amount IS NULL,0,ar.amount)) as amount
FROM person as p
    LEFT OUTER JOIN amount_r as ar ON ar.id_person = p.id
GROUP BY p.id, p.nom

有没有办法将null数据更改为零?我已经修改了这两个版本,所以现在如果它们在amount\r表中找不到记录,它们将返回零。@cte6,使用此
总和(isnull(ar.amount,0))作为amount
@LuisChavarria。什么“错误”?你的评论没有帮助。
SELECT  p.id,
        p.nom, 
        SUM(IIF(ar.amount IS NULL,0,ar.amount)) as amount
FROM person as p
    LEFT OUTER JOIN amount_r as ar ON ar.id_person = p.id
GROUP BY p.id, p.nom