2017-06-13 6 views
0

私は、地域名と地域IDを持つlprPostcodeRegionというテーブルを持っています。地域IDに基づいて以下の合計を計算したいと思います。例えば、領域ID1の場合、ある特定の合計が得られ、領域ID2の場合は異なる合計が得られ、これはおよそ15のIDに対して発生します。SQL Serverでの変数の使用

私は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 
+1

あなたの質問は投稿タイトルと一致していないようです。変数を受け入れ、そのレコードの合計を計算するプロシージャを探していますか?または、すべての地域の合計を常に返すクエリを探していますか? –

+1

あなたのクエリは何をしていますか? ( 'lpr.RegionID = 1'条件を削除した場合) – HoneyBadger

+1

グループを使用しているので、あなたのコード' lpr.RegionID = 1'でこれを削除する際に何の問題もありません。 regionids – TheGameiswar

答えて

0

- ショーン・ランゲは右である、あなたは一つの値その後、日科技連以上をカント..私のミスディーンズIDE上 ゴー

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 
+0

これは本当に役に立ちました!ありがとうございました! –

+0

そのような変数はまったく使用できません。これは単に実行可能な答えに近いものではありません。 –

+0

ダイアナはこれをしません。 @RegionIDの値はスカラー変数です。この投稿のように複数の値を保持することはできません。 1つ以上の地域が必要な場合は、これはあなたのために働くつもりはありません。 –

1

だけのサンプルです。ここ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 
+0

ディーンありがとう! –

関連する問題