我有一个页面,显示产品的所有应用程序类型。 我有一个视图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
答案 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返回给您。
答案 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;