2012-01-06 3 views
0

私はジョブを見つけて両方のジョブを申請した人数で注文する必要があります。ジョブIDが両方のジョブにジョブアプリケーションが作成されたリストジョブを返す

CREATE TABLE [dbo].[JobApplication](
[Id] [int] IDENTITY(1,1) NOT NULL, 
[JobId] [int] NULL, 
[CvId] [int] NULL, 
[MemberId] [int] NULL, 
[CreatedDate] [smalldatetime] NULL, 
[Source] [nvarchar](50) NULL, 
[AgreedTerms] [bit] NULL, 
[Authorised] [bit] NULL, 
[ApplicationStatusId] [int] NULL) 

そしてここで、SELECT文の試みである:ここでは

は、テーブルがどのように見えるかです。クエリが行う必要がある何

SELECT  JobApplication.JobId, JobApplication_1.JobId AS AppliedFor, COUNT(JobApplication_1.JobId) AS AppliedForCount 
FROM   JobApplication INNER JOIN 
        JobApplication AS JobApplication_1 ON JobApplication.CvId = JobApplication_1.CvId 
WHERE JobApplication.JobId <> JobApplication_1.JobId     
GROUP BY JobApplication.JobId, JobApplication_1.JobId 
HAVING  (JobApplication.JobId = 4279) 
ORDER BY AppliedForCount DESC 

は、ジョブID(4279)業務アプリケーションは両方のジョブに対して行われたリストのジョブをバック持参し、両方のジョブ間で共有されるアプリケーションの数によって、ジョブリストをランク付けを与えています。

私はサンプルクエリを書いていませんでしたので、どうしたら間違っているのか分かりません。だれでも助けてくれますか?

あなたは(うまくすることができますではなく、あなたが説明したように)のために適用した他のジョブを表示することはできませんが、このような集約関数でそれらのいずれかを選ぶことができます
+1

確認:あなたは、4279以外の各ジョブについて、そのジョブに対して作成されたアプリケーションの数と4279を要求しますか? –

+2

このクエリの結果は、どのようにあなたが望むものではないのですか? –

+0

ちょっとスコット私は何を行うためにクエリをする必要がありますジョブの両方のジョブに表示され、カウントで順序を表示するcvIdでアプリケーションの数を取得する、それは意味がありますか? – Burt

答えて

1

:だけに

SELECT  
JobApplication.CvId, 
MIN(JobApplication_1.JobId) AS oneoftheAppliedFor, 
COUNT(*) AS AppliedForCount 
FROM JobApplication 
INNER JOIN 
    JobApplication AS JobApplication_1 
    ON JobApplication.CvId = JobApplication_1.CvId 
    AND JobApplication.JobId = 4279 
    AND JobApplication_1.JobId <> 4279 
GROUP BY JobApplication.CvId 
ORDER BY AppliedForCount DESC 
+0

ありがとう私は今夜これを試して、それがうまくいくかどうかを見て、本当に助けに感謝します。 – Burt

関連する問題