SQL获取总值

SQL获取总值,sql,sql-server,tsql,sql-server-2005,Sql,Sql Server,Tsql,Sql Server 2005,我使用了SQL Server 2005,我想得到1张发票的总价值 电流输出: Invoice price ------------------- 1234 2000 1234 2500 9012 3000 3456 1000 但是我的选择字段这是因为价格已经很长了,我不知道如何在上面加上总和 RIGHT('000000000000'+ convert(varchar,cast

我使用了SQL Server 2005,我想得到1张发票的总价值

电流输出:

Invoice     price    
-------------------
1234       2000    
1234       2500     
9012        3000       
3456        1000       
但是我的选择字段这是因为价格已经很长了,我不知道如何在上面加上总和

   RIGHT('000000000000'+ convert(varchar,cast(A.IVC_ForeignGrossAmt as decimal(9,2))),13) as IVC_ForeignGross,
预期产出应为:

Invoice     price   
-------------------
1234       4500        
1234       4500       
9012        3000       
3456        1000        

你的意思是说我们本来应该

Invoice     price   
-------------------
1234       4500             
9012        3000       
3456        1000 
你可以试试

SELECT INVOICE.ID, SUM(PRICE) FROM INVOICE
GROUP BY INVOICE.ID

你的意思是说我们本来应该

Invoice     price   
-------------------
1234       4500             
9012        3000       
3456        1000 
你可以试试

SELECT INVOICE.ID, SUM(PRICE) FROM INVOICE
GROUP BY INVOICE.ID

使用相关子查询,如下所示:

SELECT
  Invoice,
  (SELECT SUM(t2.price)
   FROM table1 t2
   WHERE t1.invoice = t2.invoice) price           
FROM Table1 t1;
这将为您提供:

| INVOICE | PRICE |
-------------------
|    1234 |  4500 |
|    1234 |  4500 |
|    9012 |  3000 |
|    3456 |  1000 |

使用相关子查询,如下所示:

SELECT
  Invoice,
  (SELECT SUM(t2.price)
   FROM table1 t2
   WHERE t1.invoice = t2.invoice) price           
FROM Table1 t1;
这将为您提供:

| INVOICE | PRICE |
-------------------
|    1234 |  4500 |
|    1234 |  4500 |
|    9012 |  3000 |
|    3456 |  1000 |
您可以使用按发票划分的汇总,这类似于按以下方式分组:

但是,不确定正确的“000000000000…”。。。问题的一部分

您可以使用按发票划分的汇总,这类似于按以下方式分组:

但是,不确定正确的“000000000000…”。。。您的问题的一部分是,您只需要根据发票上的GROUP BY计算价格的总和,并根据需要设置价格格式

SELECT A.Invoice, 
RIGHT('000000000000'+ convert(varchar,cast(SUM(A.IVC_ForeignGrossAmt)
as decimal(9,2))),13) as IVC_ForeignGross 
FROM yourTable A
GROUP BY Invoice;
您只需要根据发票上的GROUP BY计算价格的总和,并根据需要格式化价格

SELECT A.Invoice, 
RIGHT('000000000000'+ convert(varchar,cast(SUM(A.IVC_ForeignGrossAmt)
as decimal(9,2))),13) as IVC_ForeignGross 
FROM yourTable A
GROUP BY Invoice;


船长要求出示发票的副本。这不会给你带来什么好处duplicate@syedmohsin重复发票?可能是,但我不认为在下一行显示相同的内容是个好主意,或者他/她可能会感到困惑。这绝对不像重复发票,这是id 1234 4500=2000+2500…@bonCodigo的总数,我想他/她一定很困惑,他/她只需要计算同一张发票的金额。船长16需要发票的副本。这不会给你带来什么好处duplicate@syedmohsin重复发票?可能是,但我不认为在下一行显示相同的内容是个好主意,或者他/她可能会感到困惑。这绝对不像重复发票,这是id 1234 4500=2000+2500…@bonCodigo的总数,我想他/她一定很困惑,他/她只需要计算同一张发票的金额。IVC_ForeignGrossAmt的类型是什么,它不是表中的小数点吗?@Captain16您需要重复发票吗?不确定您为什么使用这一行?右图“000000000000”+convertvarchar,castA.IVC_ForeignGrossAmt作为小数9,2,13作为IVC_ForeignGrossAmt,@bonCodigo我猜他需要在数字0000002896.15未反映在预期输出之前先行0。IVC_ForeignGrossAmt的类型是什么,这不是表中的小数点吗?@Captain16您需要重复的发票吗?不确定您为什么使用这一行?正确的'000000000000'+convertvarchar,castA.IVC_ForeignGrossAmt作为小数点9,2,13作为IVC_ForeignGross,@bonCodigo我想他需要在数字0000002896.15未反映在预期输出中之前始终领先0。我如何在我的选择字段中添加除以的和?@Captain16:但你的问题有点让人困惑。IVC_ForeignGross不是价格,您的预期输出也没有像0000002896.15这样的前导零。你能澄清一下你的要求吗?我怎样才能在我的选择字段中加上除以的和?@Captain16:但是你的问题有点让人困惑。IVC_ForeignGross不是价格,您的预期输出也没有像0000002896.15这样的前导零。你能澄清你的要求吗?