1

私はSQLが初めてなので、ご容赦ください。複数のテーブルからデータを返しています。以下は私のSQLです(より良いアプローチがあるかどうか教えてください):

SELECT [NonScrumStory].[IncidentNumber], [NonScrumStory].[Description], [DailyTaskHours].[ActivityDate], [Application].[AppName], [SupportCatagory].[Catagory], [DailyTaskHours].[PK_DailyTaskHours],n [NonScrumStory].[PK_NonScrumStory] 
FROM [NonScrumStory], [DailyTaskHours], [Application], [SupportCatagory] 
WHERE ([NonScrumStory].[UserId] = 26) 
AND ([NonScrumStory].[PK_NonScrumStory] = [DailyTaskHours].[NonScrumStoryId]) 
AND ([NonScrumStory].[CatagoryId] = [SupportCatagory].[PK_SupportCatagory]) 
AND ([NonScrumStory].[ApplicationId] = [Application].[PK_Application]) 
AND ([NonScrumStory].[Deleted] != 1) 
AND [DailyTaskHours].[ActivityDate] >= '1/1/1990' 
ORDER BY [DailyTaskHours].[ActivityDate] DESC

これは返されているものです:

ここに画像の説明を入力

これはほぼ正しいです。ただし、PK_NonScrumStory のコピーを 1 つだけ返したいのですが、その方法がわかりません。基本的に、コピーを 1 つだけ返したいので、上位 2 行のうちの 1 行は返されません。

4

3 に答える 3

1

NonScrumStore 列でグループ化し、次のように他の列を集計できます。

SELECT [NonScrumStory].[IncidentNumber], 
       [NonScrumStory].[Description], 
       MAX( [DailyTaskHours].[ActivityDate]), 
       MAX( [Application].[AppName]), 
       MAX([SupportCatagory].[Catagory]), 
       MAX([DailyTaskHours].[PK_DailyTaskHours]), 
       [NonScrumStory].[PK_NonScrumStory] 
FROM [NonScrumStory], 
     [DailyTaskHours], 
     [Application], 
     [SupportCatagory] 
WHERE ([NonScrumStory].[UserId] = 26) 
AND ([NonScrumStory].[PK_NonScrumStory] = [DailyTaskHours].[NonScrumStoryId]) 
AND ([NonScrumStory].[CatagoryId] = [SupportCatagory].[PK_SupportCatagory]) 
AND ([NonScrumStory].[ApplicationId] = [Application].[PK_Application]) 
AND ([NonScrumStory].[Deleted] != 1) 
AND [DailyTaskHours].[ActivityDate] >= '1/1/1990'
group by [NonScrumStory].[IncidentNumber], [NonScrumStory].[Description],[NonScrumStory].[PK_NonScrumStory]   
ORDER BY 3 DESC
于 2013-07-09T14:12:01.813 に答える
0

DISTINCT をクエリに追加すると、問題が解決すると思います。そのようです

SELECT DISTINCT [NonScrumStory].[インシデント番号], [NonScrumStory].[説明],...

于 2013-07-09T14:12:29.523 に答える