2010-07-09 132 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