2010-07-09 126 views
0

我是学生,这是作业。我使用SQL服务器来检查我的工作,但必须手动编写脚本。创建视图SQL

创建并显示的图,对于每个帐户组 显示帐户余额小计 。帐号组 被定义为 帐号的前两位数字。在显示屏的末尾 处显示总计 余额列。

我有一个4列的表。帐户(数字),说明,简短说明和余额(金钱)。账户号码范围从100001-610003。 COA是一个Excel链接的帐户图表。感谢您的任何建议。

这是我迄今为止...

CREATE VIEW [account_balance_sums] 
AS 
SELECT Account, Short_Description,Balance 
FROM COA 
Where Account, (first two digits 10-61 of account #) 
AND sum 
GO 

SELECT * FROM [account_balance_sums] 

回答

1

我不想为你做它,你将永远不会知道,但你将需要GROUP BY条款。

+0

谢谢...这是由帐户的前2个号码分组。我如何挑选前两个数字? – rhonda 2010-07-09 19:30:09

+0

您将需要一个函数,您可以在GROUP BY子句中指定函数,仔细考虑它,试一试,如果遇到困难,请返回此处。根据账号的存储方式不同,它是VARCHAR还是INT。 – 2010-07-09 19:34:32

+0

是的,您可以在GROUP BY子句中指定非聚合函数。 'GROUP BY LEFT(account,2)'在SQL Server 2005上适合我... – 2010-07-09 19:43:40

1

考虑到这是家庭作业我只是想给你足够的让去,但在我看来,要像做

SELECT ...., SUM(Balance) as group_subtotal, SUBSTRING(Account,0,2) AS account_group 
FROM .... 
GROUP BY SUBSTRING(Account,0,2), ... 
+0

使用SUBSTRING而不是LEFT有什么好处吗? – Shaded 2010-07-09 19:33:10

+0

不,在这种情况下,LEFT是有意义的。对于一个学生,如果你只是要学习一个命令,SUBSTRING很好理解,因为它更一般。 – 2010-07-09 19:35:42

+0

您需要更正GROUP BY - 它不会返回错误,但总和不会反映出用于分组的LEFT/SUBSTRING - 您将为每个组获得一行。 – 2010-07-09 19:40:13

0

由于这是功课,我不想把它拿走,但你需要加起来的余额,所以你需要使用SUM函数。

此外,由于您希望SUM由帐户号码的前两位数字组成,您需要使用GROUP BY创建组,并使用SUBSTR获取前两位数字。

你究竟如何把它放在一起是当然真正的技巧。

1

所以,GROUP BY和SUM将为您带来最大的方式。然后使用WITH CUBE/ROLLUP获得总计。如果你走这条路线,你可能想看看GROUPING()函数。

+0

感谢查看该立方体汇总 这是我到目前为止... CREATE VIEW [account_balance_sums] AS SELECT SUM(平衡)为总, SUBSTRING(账户,0,2)AS ACCOUNT_GROUP FROM COA GROUP BY ACCOUNT_GROUP GO SELECT * FROM [account_balance_sums] – rhonda 2010-07-09 19:49:08

+0

不那工作?你需要把你的SUBSTRING函数放在我期望的GROUP BY中。 – 2010-07-09 19:55:40