1。建表:Vote主表和VoteOption選項表
Vote表:
Vote測試數據:
VoteOption表:
Option測試數據:
現在要計算出投票名稱爲“第二個投票”的各項投票數的百分比
存儲過程如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[cms_GetVoteOptions]
@VoteGuid varchar(36)
AS
DECLARE @total_count int
SELECT @total_count = ISNULL(( SELECT SUM(VoteNum) FROM [cms_VoteOption] WHERE VoteGuid = @VoteGuid),0)
IF @total_count <> 0
SELECT OptionID,VoteGuid,VoteContent,VoteNum, (100 * VoteNum + @total_count / 2) / @total_count AS per FROM [cms_VoteOption]
WHERE VoteGuid = @VoteGuid
ELSE
SELECT OptionID,VoteGuid,VoteContent,VoteNum, 0 AS per FROM [cms_VoteOption]
WHERE VoteGuid = @VoteGuid
測試語句:exec [cms_GetVoteOptions] 'd080ccd4-8b05-4b2e-83af-f0bfac423803'
執行結果: