在Sql Server中使用变量
我有一个名为lprPostcodeRegion的表,其中包含区域名称和区域ID。我想根据区域ID计算以下总和。例如,对于区域ID 1,我将得到一个特定的总和,对于区域ID 2,我将得到一个不同的总和,这会发生在大约15个ID上 如您所见,我已将RegionID声明为1,因此,我只得到RegionID1 lpr.RegionID=1/lpr.RegionID=@RegionID的和。如何自动计算所有区域ID的总和在Sql Server中使用变量,sql,sql-server,Sql,Sql Server,我有一个名为lprPostcodeRegion的表,其中包含区域名称和区域ID。我想根据区域ID计算以下总和。例如,对于区域ID 1,我将得到一个特定的总和,对于区域ID 2,我将得到一个不同的总和,这会发生在大约15个ID上 如您所见,我已将RegionID声明为1,因此,我只得到RegionID1 lpr.RegionID=1/lpr.RegionID=@RegionID的和。如何自动计算所有区域ID的总和 DECLARE @RegionID int; SET @RegionID = 1;
DECLARE @RegionID int;
SET @RegionID = 1;
SELECT lpr.RegionID,
--wc.whsHeaderID,
SUM(c.[Chargeable Weight]) AS LeftOffWt
FROM dbo.whsConsignment wc
INNER JOIN whsHeader wh on wh.WhsHeaderID = wc.whsHeaderID
INNER JOIN dbo.cgtConsignment c ON c.[Consignment Reference] = wc.ConsignmentReference
INNER JOIN dbo.genAddress ga ON ga.AddressID = c.Consignor
INNER JOIN dbo.lstPostcode lp ON lp.Postcode = ga.PostcodePrefix
INNER JOIN dbo.lstPostcodeRegion lpr ON lpr.RegionID = lp.RegionID
AND c.Cancelled = 0
--AND wc.ConsignmentReference LIKE '4%'
and lpr.RegionID = 1
WHERE StatusCode IN ( 'NL' ) and wh.ArrDepDate between @StartDate and @EndDate
GROUP BY lpr.RegionID
只需删除lpr.RegionID=1。以下是一个示例:
SELECT lpr.RegionID,
--wc.whsHeaderID,
SUM(c.[Chargeable Weight]) AS LeftOffWt
FROM dbo.whsConsignment wc
INNER JOIN whsHeader wh on wh.WhsHeaderID = wc.whsHeaderID
INNER JOIN dbo.cgtConsignment c ON c.[Consignment Reference] = wc.ConsignmentReference
INNER JOIN dbo.genAddress ga ON ga.AddressID = c.Consignor
INNER JOIN dbo.lstPostcode lp ON lp.Postcode = ga.PostcodePrefix
INNER JOIN dbo.lstPostcodeRegion lpr ON lpr.RegionID = lp.RegionID
AND c.Cancelled = 0
--AND wc.ConsignmentReference LIKE '4%'
WHERE StatusCode IN ( 'NL' ) and wh.ArrDepDate between @StartDate and @EndDate
GROUP BY lpr.RegionID
–肖恩·兰格是对的,你不能只使用一个值。。我的错误 去迪恩斯学院
SELECT lpr.RegionID,
--wc.whsHeaderID,
SUM(c.[Chargeable Weight]) AS LeftOffWt
FROM dbo.whsConsignment wc
INNER JOIN whsHeader wh on wh.WhsHeaderID = wc.whsHeaderID
INNER JOIN dbo.cgtConsignment c ON c.[Consignment Reference] = wc.ConsignmentReference
INNER JOIN dbo.genAddress ga ON ga.AddressID = c.Consignor
INNER JOIN dbo.lstPostcode lp ON lp.Postcode = ga.PostcodePrefix
INNER JOIN dbo.lstPostcodeRegion lpr ON lpr.RegionID = lp.RegionID
AND c.Cancelled = 0
--AND wc.ConsignmentReference LIKE '4%'
WHERE StatusCode IN ( 'NL' ) and wh.ArrDepDate between @StartDate and @EndDate
GROUP BY lpr.RegionID
你的问题似乎与文章标题不符。您是否正在寻找一个接受变量并计算该记录总和的过程?或者您正在寻找一个总是返回所有区域总和的查询?您的查询不就是这样做的吗?如果您删除和lpr.RegionID=1条件,因为您使用的是group by,我看不出在您的代码“和lpr.RegionID=1”中删除这个条件有任何问题,这样它将得到所有regionidsRemove和lpr.RegionID=1的总和。。。您没有使用该变量,因此声明是无意义的。您根本不能使用这样的变量。这根本不是一个可行的答案。戴安娜不会这么做的。@RegionID的值是一个标量变量,它不能像本文建议的那样保存多个值。如果你想要一个以上的地区,这对你来说是行不通的。