sql - JOIN 中的条件 IIF
问题描述
我有下一个数据库:
表账单:
表 Bill_Details:
和表类型:
我想要一个查询来显示这个结果:
到目前为止的查询是这样的:
SELECT
Bill.Id_Bill,
Type.Id_Type,
Type.Info,
Bill_Details.Deb,
Bill_Details.Cre,
Bill.NIT,
Bill.Date2,
Bill.Comt
FROM Type
RIGHT JOIN (Bill INNER JOIN Bill_Details
ON Bill.Id_Bill = Bill_Details.Id_Bill)
ON Type.Id_Type = Bill_Details.Id_Type
ORDER BY Bill.Id_Bill, Type.Id_Type;
有了这个结果:
我不知道如何处理或如何包括这个:
Type.600,
Type."TOTAL",
IIF(SUM(Bill_Details.Deb) - Sum(Bill_Details.Cre) >= 0, ABS(SUM(Bill_Details.Deb) - Sum(Bill_Details.Cre)), "" ),
IIF(SUM(Bill_Details.Deb) - Sum(Bill_Details.Cre) <= 0, ABS(SUM(Bill_Details.Deb) - Sum(Bill_Details.Cre)), "" )
前面的代码负责在某些字段中包含新数据,因为所有其他字段都将携带上位寄存器的相同数据。我会提出一些建议来完成这一点。
解决方案
这是您从问题中删除的 UNION 的修订版本。最初的查询是一个好的开始,但您只是没有提供有关您遇到的错误或问题的足够详细信息。我的评论并不是要您删除问题查询,只是您需要提供有关错误或问题的更多详细信息。将来,如果您有一个 UNION,请确保 UNION 的每个查询单独工作。然后你可以更容易地调试问题,一次一步。
我在 UNION 的第二个查询中纠正的问题:
- 删除了查询中对表 [Type] 的引用,因为它不是 FROM 子句的一部分。相反,我将其替换为文字值。
- 修复了 FROM 子句以连接 [Bill] 和 [Bill_Details] 表。您有来自两个表的字段,那么为什么不像在 UNION 的第一个查询中那样加入它们呢?
- 对 SELECT 子句中引用的表 [Bill] 中的所有字段进行分组。您必须对所有字段进行分组,或者将它们包含在 Sum() 或 First() 等聚合表达式中。
- 对于 Iif() 语句中的 False 情况,将空字符串替换为 Null。
SELECT
Bill.Id_Bill, Type.Id_Type, Type.Info,
Bill_Details.Deb,
Bill_Details.Cre,
Bill.NIT, Bill.Date2, Bill.Comt
FROM
Type RIGHT JOIN (Bill INNER JOIN Bill_Details
ON Bill.Id_Bill = Bill_Details.Id_Bill)
ON Type.Id_Type = Bill_Details.Id_Type;
UNION
SELECT
Bill.Id_Bill, 600 As Id_Type, "TOTAL" As Info,
IIF(SUM(Bill_Details.Deb) - Sum(Bill_Details.Cre) >= 0, ABS(SUM(Bill_Details.Deb) - Sum(Bill_Details.Cre)), Null ) As Deb,
IIF(SUM(Bill_Details.Deb) - Sum(Bill_Details.Cre) <= 0, ABS(SUM(Bill_Details.Deb) - Sum(Bill_Details.Cre)), Null ) As Cre,
Bill.NIT, Bill.Date2, Bill.Comt
FROM Bill INNER JOIN Bill_Details
ON Bill.Id_Bill = Bill_Details.Id_Bill
GROUP BY Bill.Id_Bill, Bill.NIT, Bill.Date2, Bill.Comt;
推荐阅读
- sql-server - T-SQL UDF 聚合函数
- html - 文本是多行时如何消除多余的空间
- javascript - react redux reducer中缺少数组
- php - 将任何base64文件转换为文件并移动到php / Symfony 4中的目标路径
- jekyll - 设置 url 后服务器地址更改
- reactjs - Reactjs - Webpack 构建错误:错误:插件/预设文件不允许导出对象,只有函数
- sql-server-2008 - 将表格结果转换为 JSON 格式
- python - 如何更简单地相互减去所有熊猫数据框元素?
- javascript - 在通过 JavaScript 的 Canvas 中,如何将对象移动到不同的坐标?
- postgresql - 有条件地从一个表插入到另一个表中