SQL Server 按地点合计-空白时将地点显示为$0

sczxawaw  于 2023-02-11  发布在  其他
关注(0)|答案(1)|浏览(140)

我的总和金额发货的位置。有3个总的位置。今天我只得到一个位置的结果,因为有$0为其他两个。我想显示这些位置与$0。图片显示的位置与发货,我想它显示其他两个下面或上面与$0。包括代码的剪辑

SELECT [Facility_Table].facility 'Facility', isnull(sum(exten),0) 'Shipped'
FROM dtorder

下面是DDL/DML的一些示例

DECLARE @Locations TABLE (LocationID BIGINT IDENTITY, LocationName NVARCHAR(50))
DECLARE @Shipments TABLE (ShipmentID BIGINT IDENTITY, LocationID BIGINT, ShipmentAmount DECIMAL(10,4))

INSERT INTO @Locations (LocationName) VALUES
('Main Warehouse'),('New York Warehouse'),('Los Angeles Warehouse')

INSERT INTO @Shipments (LocationID, ShipmentAmount)
SELECT TOP 50 ROUND(((2 - 1) * Rnd1 + 1), 0), ROUND(((500 - 1) * Rnd1 + 1), 4)
  FROM (
        VALUES(
               RAND(CONVERT(VARBINARY,NEWID(),1)),
               RAND(CONVERT(VARBINARY,NEWID(),1))
              )
       ) a(Rnd1,Rnd2)
  CROSS APPLY sys.sysobjects
p5fdfcr1

p5fdfcr11#

如Larnu所建议的,您需要从locations表到shipments表执行LEFT OUTER JOIN。使用LEFT OUTER JOIN将返回数据集中的行,即使在没有与联接表匹配的情况下也是如此:

SELECT l.LocationName, SUM(COALESCE(s.ShipmentAmount,0)) AS TotalShipments
  FROM @Locations l
    LEFT OUTER JOIN @Shipments s
      ON l.LocationID = s.LocationID
 GROUP BY l.LocationName

| 位置名称|总发货量|
| - ------|- ------|
| 洛杉矶仓库|千|
| 主仓库|小行星3392.0912|
| 纽约仓库|八七二二、八九四五|
这只是一个聚合所需列的例子。

相关问题