Sql server 如何仅显示一行
我有这个表结构和样本数据。我只想得到一行数据。但相反,它给我的行数等于它的子记录Sql server 如何仅显示一行,sql-server,Sql Server,我有这个表结构和样本数据。我只想得到一行数据。但相反,它给我的行数等于它的子记录 --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, '
--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]
看起来您需要并且正如@honeybacker所建议的那样,最好使用现代的显式连接语法-它更清楚:
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
SELECT TOP 1…
?您希望显示哪一行?不相关,但您确实应该切换到“现代”显式join
语法,而不是逗号分隔的样式。人们倾向于发现它更容易阅读,也更容易维护。好吧,它正是按照你的要求返回的。