仅返回每次出现的第一个实例

时间:2013-11-07 16:24:39

标签: sql sql-server

我有一个页面,显示产品的所有应用程序类型。 我有一个视图dbo.View_Products_by_Application和一个表dbo.tblApplications。

dbo.tblApplicaitons有两个字段,ApplicationName&的applicationID

dbo.View_Products_By_Application包含所有产品信息。我想要做的是创建一个使用dbo.tblApplications的记录集,并仅返回该应用程序名称也出现在dbo.View_Produts_by_Application视图中的ApplicationNames。并且在返回的记录集中,我只希望每个ApplicationName出现一次。

我的记录集中需要的两个项目是ApplicationName和ApplicationID。

SELECT *
  FROM [WebV2].[dbo].[View_Products_By_Application]
  INNER JOIN dbo.tblApplications
   ON dbo.View_Products_By_Application.ApplicationName = dbo.tblApplications.ApplicationName
   Order BY dbo.View_Products_By_Application.ApplicationName ASC

3 个答案:

答案 0 :(得分:0)

我认为你可以做一个select distinct来得到你想要的东西:

SELECT distinct a.ApplicationName, a.ApplicationId
FROM [WebV2].[dbo].[View_Products_By_Application] pba
     INNER JOIN dbo.tblApplications a
      ON pba.ApplicationName = a.ApplicationName
 Order BY a.ApplicationName ASC

我还添加了表别名,以使您的查询更具可读性。

答案 1 :(得分:0)

我没有得到你们所拥有的东西,但我认为你们所寻找的是这样的。

SELECT [WebV2].[dbo].[View_Products_By_Application].*, dbo.tblApplications.*, ROW_NUMBER() OVER (PARTITION BY dbo.View_Products_By_Application.ApplicationName   Order BY dbo.View_Products_By_Application.ApplicationName ASC)
As rownum
 FROM [WebV2].[dbo].[View_Products_By_Application]
 INNER JOIN dbo.tblApplications ON dbo.View_Products_By_Application.ApplicationName = dbo.tblApplications.ApplicationName 
Where rownum= 1

我相信,这将由ApplicationName返回给您。

http://technet.microsoft.com/en-us/library/ms186734.aspx

答案 2 :(得分:0)

您可以使用EXISTS

SELECT  app.ApplicationName, app.ApplicationID
FROM    dbo.tblApplications app
WHERE   EXISTS
(
    SELECT  *
    FROM    [WebV2].[dbo].[View_Products_By_Application] vw
    WHERE   vw.ApplicationName = app.ApplicationName
)
ORDER BY app.ApplicationName;
相关问题