存储过程中的账本报告逻辑

2023-12-02

我有一个名为“患者分类帐报告”的存储过程,我需要在其中显示患者的日常交易详细信息和余额金额。我正在为您提供以下代码中的一个采样数据,这些数据是如何插入到我的临时表中的sp。

create table #Patient_ledger (PATIENT_NAME varchar(250),PATIENT_NBR bigint,BILLNO varchar(250),BILLAMOUNT bigint,
PAID_AMOUNT bigint)

Insert into #Patient_ledger (Patient_name ,Patient_nbr ,billno ,billamount ,
paid_amount )

select 'ABC',1,'DUE_BILL_ABC_1',100,50
union all
select 'ABC',1,'DUE_BILL_ABC_2',160,90
UNION ALL
select 'ABC',1,'DEPOSIT_BILL_ABC',0,60
UNION ALL
select 'XYZ',2,'DEPOSIT_BILL_XYZ',0,70
UNION ALL
select 'XYZ',2,'DUE_BILL_XYZ_1',100,30

SELECT * FROM #Patient_ledger

Drop table #Patient_ledger

我想如何在报告中显示数据。

 PATIENT_NUMBER   BILLNO         BILLAMOUNT  PAID_AMOUNT  BALANCE

    1          DUE_BILL_ABC_1      100         50            50  --(100-50)     
    1          DUE_BILL_ABC_2      160         90            120  --(160-90 +50(Here 50 is prev balance amount of same patient))
    1          DEPOSIT_BILL_ABC     0          40            80 ---( 120-40=80)
    2          DEPOSIT_BILL_XYZ     0          70            0        
    2          DUE_BILL_XYZ_1      100         30            0  --Here Balance is zero because  patient has deposited some      
                                                                 --amount before bill (70-100+30=0)      

Note: Balance amount should deduct when deposits are paid by that particual patient.

我已经尝试过如下可能对你有帮助

SELECT Patient_nbr,
       billno,
       billamount,
       PAID_AMOUNT,
       CASE
         WHEN RNO > 1 THEN Sum(billamount - PAID_AMOUNT)
                             OVER(
                               PARTITION BY Patient_nbr
                               ORDER BY RNO)
         ELSE Iif(( billamount - PAID_AMOUNT ) < 0, 0, billamount - PAID_AMOUNT)
       END
FROM   (SELECT *,
               Row_number()
                 OVER(
                   PARTITION BY Patient_nbr
                   ORDER BY Patient_nbr) AS RNO
        FROM   #Patient_ledger) A 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

存储过程中的账本报告逻辑 的相关文章

  • SQL LIKE 运算符在应该显示任何结果时没有显示任何结果

    我有一个包含大量信息的车辆表 但其中一列是 MSSQL 表中的 所有者 但我使用时无法选择其中一个所有者LIKE但如果我可以使用 Silkeborg Distributionscenter 是所有者 是的 表和参数中都有一个双空格 所以参数
  • 使用 HTTP 访问数据库对象

    是否可以使用 HTTP 访问数据库对象SQL Server 2012它的完成方式是使用SQL Server 2000 我提到了下面的文章 但它是关于SQL Server 2000 使用 HTTP 访问数据库对象 http technet m
  • 更新语句错误:子查询返回超过 1 个值

    我正在尝试更新列中的所有记录 以便它们以 CD 开头 例如DCE206 将成为 CDE206 UPDATE table SET column REPLACE column1 DC CD WHERE column1 LIKE DC 我正在使用
  • 触发器定义中的 DELETE 语句问题

    我创建了一个插入 更新触发器 旨在根据插入的数据更新不同表中的信息 触发器执行 或应该执行 的最后一件事是从目标表中删除所有数据 这些数据的条件在触发器的插入部分期间可能已更改 除了最后的之外 一切似乎都在触发DELETE陈述 它正在执行D
  • MS SQL 2005 备份能否恢复到 MS SQL 2008 实例上?

    是否可以将 SQL Server 2005 数据库的备份恢复到 SQL Server 2008 的实例上 我需要重建一台服务器 因为它变得相当糟糕 所以我计划借此机会升级到 SQL 2008 并想知道我是否能够正常恢复我的备份 从 2005
  • GRANT EXECUTE 所需的权限

    我正在为需要能够创建和删除过程但也向其他用户授予执行权限的用户创建一个组 GRANT CREATE PROCEDURE TO xxx xxx GRANT ALTER ON SCHEMA dbo TO xxx xxx 但是 我需要向组授予什么
  • 插入 SQL Server 视图时使用 @@identity 或输出?

    请原谅我 我对 StackOverflow 和 SQL 都是新手 Tl dr 使用时 identity 或任何其他选项 例如scope identity或输出变量 是否也可以使用视图 这是一个使用存储过程的示例 identity SNIP
  • SQL:从单个查询列出多对多

    我有 3 个表 分别代表 Users Roles 和多对多 UsersInRoles 键为 UserId RoleId 相关列 用户名 角色名 在管理 html 应用程序中 我想显示所有用户及其所在角色的列表 我尝试从 SQL 构建一个将返
  • 存储过程 EXEC 与 sp_executesql 的区别?

    我写了两个存储过程 其中一个是sp executesql而其他没有 sp executesql 两者都正确执行相同的结果 我不明白两者之间有什么区别 EXEC SQL 与 EXEC sp executesql SQL N eStatus v
  • 将记录与另一个表上的最新记录连接

    我正在尝试创建一个 SQL 视图 我如何从一个表中选择最新的记录 而其他记录保持原样 我需要从所有表中选择所有记录 这工作正常 但我需要仅按日期选择最新的提案 这是我遇到的问题 这是我到目前为止所拥有的 SELECT TOP 100 PER
  • 更改 SQL Server 中所有表的所有列的排序规则

    我导入了一个包含一些数据的数据库 以便与另一个数据库进行比较 目标数据库有排序规则Latin1 General CI AS并且源数据库有SQL Latin1 General CP1 CI AS 我确实将源数据库的排序规则更改为Latin1
  • 类型与创建 CLR 存储过程不匹配

    我在程序集中有一个如下所示的方法 namespace MyNameSpace public class MyClass Microsoft SqlServer Server SqlProcedure public static void M
  • 找出会话的默认 SQL Server 架构

    我需要知道正在执行某些 DDL 的 SQL 脚本中当前的默认架构是什么 我不需要设置架构 但我确实需要将对它的引用 名称或 ID 放入变量中 该脚本可能以 Windows 登录身份运行 因此以下内容还不够 SELECT name defau
  • 使用存储过程访问数据可以提供哪些安全优势?

    我看到一些指南建议您通过存储过程对所有数据访问进行分层来保护数据库 我知道对于 SQL Server 您可以保护表甚至列免受 CRUD 操作的影响 例如 Logged in as sa USE AdventureWorks GRANT SE
  • 删除 Sql 服务器中最后一次出现特殊字符之前的子字符串

    我想删除最后一次出现句点之前的子字符串 查询应该转换r k Lee Brown to Lee Brown 所以 基本上我需要最后一个点之前的子字符串 并将其替换为 尝试这个 SELECT RIGHT str CHARINDEX REVERS
  • T-SQL 中的不等式测试

    我刚刚在 WHERE 子句中遇到了这个 AND NOT t id id 这与以下内容相比如何 AND t id id Or with AND t id lt gt id 我总是自己写后者 但显然其他人有不同的想法 其中一个的表现会比另一个更
  • 如何从表中选择层次结构中的最低级别

    我有一个具有父 子关系的表 Table A Column Id int Column Parent Id int Column Description text 一组示例数据如下 999 NULL Corp 998 999 Div1 997
  • 使用 sql 查询选择最近 30 天

    我正在查找过去 30 天内周一 周二 周三 周四 周五 周六 周日的数量 我可以在没有实际数据库表的情况下选择最近 30 天的日期和星期几吗 就像是 SELECT everything between convert date GETDAT
  • 如何在 SQL 中编写 where 子句来按一天中的时间过滤 DATETIME 列?

    我有带有 DATETIME 列时间戳的数据 我想将其过滤到 DATETIME 介于上午 9 30 到下午 5 30 之间的任意一天的记录集 最好的方法是什么 更新 更改是因为我需要精确到分钟 而不仅仅是小时 对于那个很抱歉 您始终可以将其编
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做

随机推荐

  • Javascript 重定向并将参数传递给重定向页面

    我有一个包含两个按钮的主页 每个按钮都应该重定向到同一页面 但是 您重定向到的页面应该根据您按下的按钮执行不同的操作 如何将用户重定向到该新页面并根据您单击的按钮传递参数 使用 JQuery 等工具包 跨浏览器事件处理要简单得多 HTML
  • 将日期分解为数字

    我很抱歉打扰这个问题 但找不到解决方案 我有一个带有列名称日期的 data frame str df date Factor w 360 levels 1982 11 30 1982 12 31 1 4 7 10 13 16 19 22 2
  • 在 PHP 中使用heredoc语法时遇到问题[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心
  • NativeScript 在 Mac 操作系统上找不到 Android SDK

    我已经安装了 NativeScript 并且尝试这样做tns platform add android但它不起作用 ANDROID HOME 路径是正确的 我已经安装了 SDK API 22 和最新的 和工具 25 0 2 当我跑步时tns
  • Magento - 如何在结帐过程中向订单添加发票费用

    如何使用我的付款模块将发票费用添加到订单中 我想这应该在结帐过程中通过我的付款方式模型完成 也许我应该创建一个项目 产品并将其添加到购物车 报价 订单对象中 但我不知道如何做这些事情 请帮忙 尽管有可能 但这并不适合胆怯的人 以下是向总计区
  • 更改 HREF 后 IE 忘记了 A-Tag 的主机名

    我设置了href 的属性 a 在项目中动态标记 在其他时候 我检查 a 的 DOM 属性称为hostname 以确定它是否是内部链接 基本上 这就是发生的情况 a href my first link MyLink a div div JS
  • Android Studio 3.6.1 与 Gradle 插件版本 3.6.1 和 Gradle 版本 5.6.4 无法正常工作

    我的应用程序运行良好 我刚刚更新了安卓工作室3 6 1 更新 Android Studio 后 我收到此对话框 我将更新 Gradle 插件的版本 如下所示 更新后 我的应用程序崩溃并出现以下错误 java lang NoClassDefF
  • .htaccess 重写规则不会使用 unicode 字符

    我正在使用以下 ModRewrite 来使我的网址看起来更干净 RewriteEngine On RewriteRule a zA Z0 9 index php key 1 它允许使用字母和数字就好 但当我尝试使用 时 它会产生 400 错
  • if 和 elseif 有什么区别?

    这应该是一个简单的问题 我有一个简单的 if else 语句 与此有区别吗
  • JavaFX 2 自定义弹出窗格

    JavaFX 2 颜色选择器有一个按钮 可以弹出颜色选择器窗格 如下所示 我想做类似的事情 因为我希望在单击按钮时弹出一个自定义窗格 并在单击其他内容时消失 在我的例子中是一些图像缩略图 实现这一目标的最佳方法是什么 我应该使用 Conte
  • iOS isKindOfClass 和 isMemberOfClass 之间的区别

    两者有什么区别isKind of aClass AnyClass 和isMember of aClass AnyClass 斯威夫特函数 Objective C 中的原始问题 两者有什么区别isKindOfClass Class aClas
  • datepicker 不会触发 onchange 事件

    我有两个输入日期字段 一个通过 JQuery datepicker 生成日期 我希望第二个通过 onblur 或 onchange 事件从第一个输入中获取值 当我手动输入日期时它工作正常 但一旦通过 datepicker 输入 它不会触发第
  • 调试代码时 Ninject 出现无源可用错误

    我已经使用NuGet安装了最新版本的Ninject v2 2 1 4 然后我创建了自己的 NinjectDependencyResolver 归功于亚当 弗里曼和史蒂夫 桑德森 public class NinjectDependencyR
  • 第一次运行flutter时报错:没有找到pubspec.yaml文件

    我试着跟随Get Stated here https flutter io setup windows And got gt flutter run Error No pubspec yaml file found This command
  • Firebase 数据库规范化

    所以我制作了一个简单的应用程序 一个三轮车巡逻应用程序 您可以通过登录并填写表格来举报鲁莽的三轮车司机 在我们的城市这里没有任何问题 报告表格包含 created at description lat lng plateNumber 到目前
  • 用于按行“连接 If”的 VBA 用户定义函数

    我有一些关于是否为特定站点执行特定 服务 例如鸟类调查 的数据 每项服务都有 是 或 否 E G A 列包含站点名称 例如 A B C D 和 E A1 中标题为 站点名称 A2 中标题为 A 依此类推 B 列 B1 中包含 鸟类调查 然后
  • 捕获分段违规并继续生活

    我正在编写一个程序来检查它自己的地址空间 具体来说 我关心所有 malloc 的数据块 如果有一些系统调用来获取它们的列表 那就太棒了 对于我的应用程序 我不能使用 LD PRELOAD wrap 或任何额外的命令行选项 如果有办法做到这一
  • 使 arraylist 上的 select -unique 返回 arraylist 而不是字符串

    我在下面的类中有三个数组列表 我想让它们保持独特 但是 如果数组列表中只有一项 字符串 并且您使用 select unique 或任何其他方法来实现此目的 它将返回字符串而不是字符串列表 用 包围它也不起作用 因为这会将其转换为数组而不是数
  • Android内存泄漏,没有静态变量

    我是一名初级 Android 开发人员 作为一个实践项目 我正在尝试制作一个可以拍照 将其保存到外部存储并在 ImageView 中显示的活动 几乎一切似乎都正常 但是 我似乎有内存泄漏 当屏幕方向改变时 我相信活动会被破坏 然后重新创建
  • 存储过程中的账本报告逻辑

    我有一个名为 患者分类帐报告 的存储过程 我需要在其中显示患者的日常交易详细信息和余额金额 我正在为您提供以下代码中的一个采样数据 这些数据是如何插入到我的临时表中的sp create table Patient ledger PATIEN