0

我有一个页面显示产品的所有应用程序类型。我有一个视图 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
4

3 回答 3

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

于 2013-11-07T16:39:29.073 回答
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

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

于 2013-11-07T16:30:02.190 回答
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;
于 2013-11-07T16:49:45.190 回答