我需要创建一个存储过程 - 但我对它们的知识非常有限。
基本上它会从现有表中导入数据,处理这些数据,然后创建一个新表。
最好的办法是什么?
有几个不同的计数器,并根据另一个值将值添加到这些计数器中;
例如:
house_name | person_name
------------+------------
bighouse | sam
bighouse | sammy
bighouse | joe
smlhouse | brad
smlhouse | kev
即。在这个例子中,计数器的值为3和2(bighouse中有3个人,smlhouse中有2个人)(在我的实际工作中,两者都是'int',所以没有问题)。
我被告知要使用Cursor,但我发现很难知道如何使用它!
任何帮助表示感谢。
答案 0 :(得分:3)
通常,您不会将“派生”信息存储在数据库中。它总是带来不一致的风险。
通常的做法是添加一个视图:
create view house_stats
as
select house_name
, count(*) as number_of_people
from YourTable
group by
house_name
您可以在查询中使用该视图,因为它是一个表。因为它实际上是存储的计算,所以不存在不一致的风险。
答案 1 :(得分:0)
这些链接可以帮助您入门:
http://www.mssqltips.com/sqlservertutorial/160/sql-server-stored-procedure/
http://www.codeproject.com/Articles/126898/Sql-Server-How-to-write-a-Stored-procedure-in-Sql
答案 2 :(得分:0)
你的问题对我来说很模糊,但我可以为你提供非常具体的例子。
INSERT INTO
yourResultsTable
SELECT
house_name,
COUNT(*) AS people_per_house
FROM
yourDataTable
GROUP BY
house_name
这可以避免使用游标。 SQL是一个基于集合的语言,尽管T-SQL可以执行循环,但在绝大多数情况下,你会发现性能要差得多。
如果你有其他的复杂的计数器,我们也可以提供帮助,但我们需要知道输入数据的结构,对数据的任何约束,输出数据的结构和约束,以及两者相互关联。