如何添加和分割sql查询的结果

时间:2012-10-12 08:16:43

标签: sql razor webmatrix

我有一个数据库,我正在尝试为其创建网页摘要小部件。我正在使用MS Webmatrix和razor。

我有几个选择查询设置为变量,然后我的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>;
}
<!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>

如何让我的标记在堆栈中整齐显示?这有点难以阅读!

2 个答案:

答案 0 :(得分:1)

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

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

似乎这会对你有所帮助,有人会说已经,或者你已经知道如何做到这一点,并且由于某种原因这对你没有帮助,但也许我不明白这个问题?

无论如何,希望我能提供帮助,如果不让我知道,我会再试一次:)。

祝你好运!

答案 1 :(得分:0)

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

这是正确答案。