Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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查询,以添加两列之和的新列_Sql_Sql Server - Fatal编程技术网

更新复杂的SQL查询,以添加两列之和的新列

更新复杂的SQL查询,以添加两列之和的新列,sql,sql-server,Sql,Sql Server,下面的SQL查询创建了一个表,下一行中有n个列 …,货币金额,税额,… 我很难更新下面的查询来创建一个名为total和position的新列,它正好位于tax\u amount列之后,total列应该包含在curr\u amount和tax\u amount之和之后获得的值 我已经在这方面工作了一天多了,但一直没有弄明白 顺便说一句,这里还没人。非常感谢你抽出时间。 . 选择Isnull(t.total\u month,'total')total\u month, t、 税额, t、 货币金额

下面的SQL查询创建了一个表,下一行中有
n个列

货币金额
税额

我很难更新下面的查询来创建一个名为
total
position
的新列,它正好位于
tax\u amount
列之后,
total
列应该包含在
curr\u amount
tax\u amount
之和之后获得的值

我已经在这方面工作了一天多了,但一直没有弄明白

顺便说一句,这里还没人。非常感谢你抽出时间。 .

选择Isnull(t.total\u month,'total')total\u month,
t、 税额,
t、 货币金额,
t、 使用量,
t、 kh_数量,
t、 账单
从(选择dbo.Sigmadf(bm.posted_date,'YYYY-MM')总计月,
总数(例)
当rr.usage\u qty为空时,则为0
ELSE Cast(rr.usage_数量为数字(18,2))
结束)使用数量,
总数(例)
当bm.curr\u amount为空时,则为0
其他本币金额
结束)当前金额,
总数(例)
当bm.adj_amount为空时,则为0
其他bm.adj_金额
结束)调整金额,
总数(例)
当bm.bal_fwd_amount为空时,则为0
其他bm.bal\U fwd\U金额
(完)bal_forward,,
总数(例)
当bm.tax_金额为空时,则为0
其他bm.税款金额
(完)税额,,
总数(例)
当bm.due_amount为空时,则为0
其他bm.到期金额
结束)到期金额,
总数(例)
当bm.last\u total\u paid\u amount为空时,则为0
其他bm.上一次支付总额*1
结束)已付金额,
总数(例)
当bm.bill\u print='Y'时,则为1
其他0
完)pdf,
总数(例)
当Isnull(bm.bill\u处理\u代码'0')='0'时,则为1
其他0
完)注册,,
总数(例)
当Isnull(bm.bill\u处理\u代码'0')='1'时,则为1
其他0
完)ftime_cnt,
总数(例)
当Isnull(bm.bill_处理代码'0')='9999'时,则为1
其他0
结束)时间,
计数(*)账单,
总数(例)
当账单状态为'01'时,则为1
其他0
完)坎昆,
总数(例)
当账单状态为'01'时,则
案例
当rr.usage\u qty为空时,则为0
ELSE Cast(rr.usage_数量为数字(18,2))
结束
其他0
完)坎昆(美国),
总数(例)
当vis.kh_数量为空时,则为0
其他铸件(相对于kh_数量为数字(18,2))
完)kh_数量
来自bill_master bm和(nolock)
内部连接(选择票据编号,
总数(例)
当vpb.recurr\u charge\u输入('T4'时,
"SLF")
然后
案例
当vpb.print_数量='Y'
并且vpb.usage\u数量不为空
然后
铸造(vpb.用途_数量为
数字(18,2))
其他0
结束
其他0
结束)使用数量
从v\u打印\u账单\u所有vpb
按工程量清单(编号)rr分组
在rr.bill\u no=bm.bill\u no上
左外连接与(nolock)的主连接
关于bm.bill\u no=vis.bill\u no
其中1=1
和dbo.Trunc(bm.posted_date)>='20150101'

和dbo.Trunc(bm.posted_date)我必须说,解释不是很清楚。 据我所知,您需要总共两列

因此,将所有查询包装在括号中,称之为子查询,并将顶部的两列相加:

SELECT subQuery.total_month as  bill_date, 
subQuery.curr_amount as amount, 
subQuery.tax_amount tax, 
subQuery.curr_amount + subQuery.tax_amount  as [total],
...
FROM
(..your entire query here..) as subQuery

你能举一个小的例子吗?当你不得不四处滚动时,你和我们都很难理解一个问题。但这是我正在处理的问题,我的friendSide便笺有困难-但非常重要。这似乎是一个金融应用程序。请帮你自己一个忙,停止使用NOLOCK。肮脏的阅读应该对于这种类型的应用程序,这是避免这种情况的充分理由,但它会给表带来太多其他数据不一致。它有时会返回丢失的和/或重复的行,这实际上是错误的
SELECT subQuery.total_month as  bill_date, 
subQuery.curr_amount as amount, 
subQuery.tax_amount tax, 
subQuery.curr_amount + subQuery.tax_amount  as [total],
...
FROM
(..your entire query here..) as subQuery