代码之家  ›  专栏  ›  技术社区  ›  Doonie Darkoo

如何仅显示一行

  •  0
  • Doonie Darkoo  · 技术社区  · 8 年前

    --DROP TABLE [Detail];
    --DROP TABLE [Master];
    
    --CREATE TABLE [Master]
    --(
    --ID INT NOT NULL PRIMARY KEY,
    --Code VARCHAR(25)
    --);
    
    --INSERT INTO [Master] VALUES (1, 'CASH');
    --INSERT INTO [Master] VALUES (2, 'CASH');
    
    --CREATE TABLE [Detail]
    --(
    --ID INT NOT NULL PRIMARY KEY,
    --MasterID INT,
    --DrAmount Numeric,
    --CrAmount Numeric,
    --CONSTRAINT FK_MASTER FOREIGN KEY (MasterID)
    --REFERENCES [Master](ID)
    --);
    
    --INSERT INTO [Detail] VALUES (1, 1, '2200', NULL);
    --INSERT INTO [Detail] VALUES (2, 1, NULL, '3200');
    --INSERT INTO [Detail] VALUES (3, 1, '1000', NULL);
    --INSERT INTO [Detail] VALUES (4, 2, NULL, '3200');
    --INSERT INTO [Detail] VALUES (5, 2, '3200', NULL);
    

    以下是查询和结果:

    SELECT [MASTER].[Code], [DETAIL].[MasterID], [DETAIL].[CrAmount]
    FROM [MASTER], [DETAIL]
    WHERE [MASTER].[ID] = [DETAIL].[MasterID]
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Rigerta    8 年前

    看起来你需要 GROUP BY 而且正如@honeybeadger所建议的,最好使用现代的显式连接语法-它更清楚:

    select m.code, d.masterid, sum(d.cramount) amount
    from [master] m 
         join[detail] d on m.[id] = d.[masterid]
    group by m.code, d.masterid
    

    code   masterid  amount
    CASH    1         3200
    CASH    2         3200