Sql 鲍勃和约翰互相欠钱
我在一个文件中有以下3个字段:person\u ows person\u is\u欠款金额 示例内容:Sql 鲍勃和约翰互相欠钱,sql,Sql,我在一个文件中有以下3个字段:person\u ows person\u is\u欠款金额 示例内容: Bob John 100 John Bob 110 SQL是什么样子的,它生成: Bob John 100 110 John Bob 110 100 很抱歉,如果这是一个微不足道的问题,但我只是试图学习SQL,我发现它真的像地狱 所以,您需要的是能够连接两行。在这种情况下,您可能需要一个外部联接,假设彼此之间并不总是匹
Bob John 100
John Bob 110
SQL是什么样子的,它生成:
Bob John 100 110
John Bob 110 100
很抱歉,如果这是一个微不足道的问题,但我只是试图学习SQL,我发现它真的像地狱 所以,您需要的是能够
连接两行。在这种情况下,您可能需要一个外部联接
,假设彼此之间并不总是匹配的。现在,您只需要提出您的加入
标准,在本例中,该标准将基于姓名(个人欠
和个人欠
):
COALESCE
只是为了确保当不存在匹配项时,得到的值是0,而不是NULL
此外,这假设个人欠下的
和个人欠下的
的每个组合中只有一个。如果您可能有两行显示John欠Bill两个不同金额的钱,那么您必须调整上面的SQL,这将有点复杂
如果你打算大量使用SQL,那么你应该花时间阅读一本(或者更多)关于这个主题的入门书。假设(person\u ows,person\u ows)的组合是唯一的
select person_ows,
person_is_owed,
amount,
(select t2.amount
from the_table t2
where (t2.person_ows, t2.person_is_owed) = (t1.person_is_owed, t1.person_ows))
from the_table t1
“文件中的以下3个字段”在SQL中,数据存储在表而不是文件中。这些部分称为列而不是字段。另外:您使用的是哪种数据库管理系统?您能解释一下文件内容的含义吗?ie:这是因为不同的人互相欠钱吗?列定义/名称是什么?所需的输出格式是什么?既然你有平面文件,为什么要涉及SQL?我正遭受着“问题禁令”,因为(我想)问题质量很差。这个问题已经被分配了两张反对票,我想把它去掉。在这种特殊情况下,我应该如何解决这个问题?我不敢删除它,因为它显然没有帮助。谢谢你,太好了,汤姆。工作起来很有魅力。谢谢我不打算“大量”使用SQL,但我意识到绝对需要投资一本书。如果您愿意建议,我们将不胜感激。W3schools.com是一个很好的参考,Udemy有一些免费的SQL教程(我不能说质量有多高,因为我从未使用过它们),否则只需谷歌“SQL for初学者”,您应该可以找到很多。另外,如果这个答案涵盖了你的问题,请不要忘记将它标记为“正确”答案,以便将来其他人可以更容易地找到它。Thnx to u以及ahwnn
select person_ows,
person_is_owed,
amount,
(select t2.amount
from the_table t2
where (t2.person_ows, t2.person_is_owed) = (t1.person_is_owed, t1.person_ows))
from the_table t1