Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Sql Server中使用变量_Sql_Sql Server - Fatal编程技术网

在Sql Server中使用变量

在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;

我有一个名为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;
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的值是一个标量变量,它不能像本文建议的那样保存多个值。如果你想要一个以上的地区,这对你来说是行不通的。