繁体   English   中英

如何添加和划分来自SQL查询的结果

[英]how to add and divide results from sql queries

我有一个要为其创建网页摘要小部件的数据库。 我正在使用MS Webmatrix和剃刀。

我有几个选择查询设置为变量,然后我的html要求它们的值作为字符串并显示它们。 到现在为止还挺好。
现在,我想将两个结果加在一起,然后减去第三个。 EG:将今天的已处理订单(我称为itotl)和今天的部分已处理订单(ppr)相加,并减去今天的信用额(ctotl)。
因此,我想要(itotl + ppr)-ctotl。
如果我尝试通过在HTML中输入@itotl和@ppr变量等来执行此操作,则它将失败。
将会有一种简单的,行业最佳实践的方法来完成此操作,但我只是在学习,而且很难做到!

有什么建议么? 如果有帮助,我可以将整个代码粘贴在这里。 这里:
@{
Layout = "~/_SiteLayout.cshtml";
Page.Title = "SCOREBOARD";
var db = Database.Open("data");
var itot = db.QueryValue("SELECT SUM(SUBTOTAL) from dbo.DR_TRANS where TRANSDATE = 41192 and SUBTOTAL >0");
var isum = db.QueryValue("SELECT COUNT(subtotal) from dbo.DR_TRANS where TRANSDATE = 41192 and Subtotal >0");
var qsum = db.QueryValue("SELECT COUNT(subtotal) from dbo.SALESORD_HDR where ORDERDATE = 41192 and Subtotal >0");
var ppr = db.QueryValue("select sum(subtotal) from dbo.SALESORD_HDR where ORDERDATE = 41192 and SUBTOTAL >0 and status = 1");
var psum = db.QueryValue("SELECT COUNT(subtotal) from dbo.SALESORD_HDR where ORDERDATE = 41192 and Status =1");
var qtot = db.QueryValue("SELECT SUM(SUBTOTAL) FROM dbo.SALESORD_HDR where ORDERDATE = 41192 and SUBTOTAL >0");
var ctot = db.QueryValue("SELECT SUM(SUBTOTAL) from dbo.DR_TRANS where TRANSDATE = 41192 and TRANSTYPE = 1 and SUBTOTAL <0");
var csum = db.QueryValue("SELECT COUNT(SUBTOTAL) from dbo.DR_TRANS where TRANSDATE = 41192 and TRANSTYPE = 1 and SUBTOTAL <0");
<META HTTP-EQUIV="REFRESH" CONTENT="15"></META>;
}
@{
Layout = "~/_SiteLayout.cshtml";
Page.Title = "SCOREBOARD";
var db = Database.Open("data");
var itot = db.QueryValue("SELECT SUM(SUBTOTAL) from dbo.DR_TRANS where TRANSDATE = 41192 and SUBTOTAL >0");
var isum = db.QueryValue("SELECT COUNT(subtotal) from dbo.DR_TRANS where TRANSDATE = 41192 and Subtotal >0");
var qsum = db.QueryValue("SELECT COUNT(subtotal) from dbo.SALESORD_HDR where ORDERDATE = 41192 and Subtotal >0");
var ppr = db.QueryValue("select sum(subtotal) from dbo.SALESORD_HDR where ORDERDATE = 41192 and SUBTOTAL >0 and status = 1");
var psum = db.QueryValue("SELECT COUNT(subtotal) from dbo.SALESORD_HDR where ORDERDATE = 41192 and Status =1");
var qtot = db.QueryValue("SELECT SUM(SUBTOTAL) FROM dbo.SALESORD_HDR where ORDERDATE = 41192 and SUBTOTAL >0");
var ctot = db.QueryValue("SELECT SUM(SUBTOTAL) from dbo.DR_TRANS where TRANSDATE = 41192 and TRANSTYPE = 1 and SUBTOTAL <0");
var csum = db.QueryValue("SELECT COUNT(SUBTOTAL) from dbo.DR_TRANS where TRANSDATE = 41192 and TRANSTYPE = 1 and SUBTOTAL <0");
<META HTTP-EQUIV="REFRESH" CONTENT="15"></META>;
}
<!DOCTYPE html>

<html lang="en"> <head>
<meta charset="utf-8" />
<title></title>
<style>
.column1 {color: blue; font-weight: bold; font-size: 1.6em;}
.column2 {color: red;}
</style>
</head>
<body>
<p>@qsum.ToString() Quotes:
<span class=@(qtot > 20000 ? "column1" : "column2")>@qtot.ToString("C")</span>
</p>
<p>@psum.ToString() Partly Processed:
<span class=@(ppr > 18000 ? "column1" : "column2")>@ppr.ToString("C")</span>
</p>
<p>@isum.ToString() Invoices:
<span class=@(itot > 18000 ? "column1" : "column2")>@itot.ToString("C")</span>
</p>
<p>@csum.ToString() Credits:
<span class=@(ctot > 18000 ? "column1" : "column2")>@ctot.ToString("C")</span>
</p>
<p>Nett Sales:</p>
</body>
</html>
<head>
<meta charset="utf-8" />
<title></title>
<style>
.column1 {color: blue; font-weight: bold; font-size: 1.6em;}
.column2 {color: red;}
</style>
</head>
<body>
<p>@qsum.ToString() Quotes:
<span class=@(qtot > 20000 ? "column1" : "column2")>@qtot.ToString("C")</span>
</p>
<p>@psum.ToString() Partly Processed:
<span class=@(ppr > 18000 ? "column1" : "column2")>@ppr.ToString("C")</span>
</p>
<p>@isum.ToString() Invoices:
<span class=@(itot > 18000 ? "column1" : "column2")>@itot.ToString("C")</span>
</p>
<p>@csum.ToString() Credits:
<span class=@(ctot > 18000 ? "column1" : "column2")>@ctot.ToString("C")</span>
</p>
<p>Nett Sales:</p>
</body>
</html>

如何使我的标记整齐地显示在堆栈中? 这使阅读起来有些困难!

我不知道这是否有帮助,但是可以随时在SQL语句本身中添加,乘以等值,然后甚至可以给它一个别名(使用AS):

SELECT ((itotl - ppr) + ctotl) AS newTotal FROM tableName WHERE .....etc.

看来这是否会对您有帮助,有人已经说过了,或者您已经知道该怎么做,由于某种原因它对您没有帮助,但也许我不明白这个问题?

无论如何,希望我能帮忙,如果没有让我知道,我会再试一次:)

祝好运!

在页面的代码部分中,但在查询语句之后,添加行
var xxxx = itotl + ppr - ctotl;,其中xxxx是要显示的新值。 顺便说一句,我在声明的变量中看不到itotl和ctotl。 – GmG 10月12日10:01

这是正确的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM