2016-07-05 20 views
-2

私は2つのテーブルを持っています。第一1はGROUP BY句にエラーがあります

空室テーブル空席テーブルです:

╔════════════╦═════════════╗ 
║ VacancyId ║ title  ║ 
╠════════════╬═════════════╣ 
║  1  ║ Vac1  ║ 
║  2  ║ Vac2  ║ 
║  3  ║ Vac3  ║ 
╚════════════╩═════════════╝ 

と第二1は

空室アプリケーションテーブル空席アプリケーションテーブルです:あなたが見ることができるよう

╔══════════════════════╦═══════════╦══════════════╦══════════════════╗ 
║   id   ║ VacancyId ║ source  ║ Application Date ║ 
╠══════════════════════╬═══════════╬══════════════╬══════════════════╣ 
║   1   ║  1  ║  abc  ║ 2009-01-01  ║ 
║   2   ║  1  ║  def  ║ 2009-01-02  ║ 
║   3   ║  2  ║  abc  ║ 2010-01-02  ║ 
║   4   ║  3  ║  def  ║ 2011-02-02  ║ 
║   5   ║  2  ║  abc  ║ 2010-03-04  ║ 
║   6   ║  1  ║  def  ║ 2009-04-07  ║ 
╚══════════════════════╩═══════════╩══════════════╩══════════════════╝ 

空席テーブルの1つのレコードに対して、空席に複数のエントリがありますアプリケーションテーブル。このテーブルにsourceという別の列があります。いいえを数えたい。各空席の申請はその出所によって異なります。そのため

期待される結果

╔════════ ╦══════ ╦═════════════╗ 
║ vacancy ║ source ║ No. Of App ║ 
╠════════ ╬══════ ╬═════════════╣ 
║ vac1 ║ ABC ║  1  ║ 
║ vac1 ║ DEF ║  2  ║ 
║ vac2 ║ abc ║  2 
    vac3 ║ def   1 
╚════════ ╩══════ ╩═════════════╝ 

私はこのクエリに

select v.title, isnull(nullif(va.source,''), 'Unknown') source, COUNT(va.source) apps from [VacancyApplication] as va inner join [Vacancy] as v on v.id= va.vacancyid  group by source 

を書かれたが、その私にエラーを与えて

Vacancy.title」しているので、選択リストに無効です集計関数またはGROUP BY句に含まれているのは ではありません。

私は空席のタイトルを除外した場合、それは

select isnull(nullif(source,''), 'Unknown') source, COUNT(source) apps 
    from [MyPeople_DataVersion2].[dbo].[VacancyApplication] 
    where vacancyid in (select v.id from [MyPeople_DataVersion2].[dbo].[Vacancy] as v where v.deleted=0) and deleted = 0 
    group by source 

を引き起こす与えるが、その後、(持っている人、私は空席の名前を知らない...と私はそれが複数の空孔源を組み合わせていると思います同じソース名)を一緒に使用します。

あなたはあなただけのエラーメッセージがあなたを示してどのよう

Select v.title, 
isnull(nullif(va.source,''), 
'Unknown') source, 
COUNT(va.source) apps 
from [VacancyApplication] as va inner join [Vacancy] as v on v.id= va.vacancyid  
group by v.title, 
isnull(nullif(va.source,''), 'Unknown') 
+1

によってグループにv.titleを追加 'v.title BY ..GROUPは、問題がよくエラーによって記述されて –

+1

をsource'メッセージ。それをお読みください。 – Pred

+1

一般的なGROUP BY規則は次のとおりです。GROUP BY句が指定されている場合、SELECTリストの各列参照は、グループ化列を識別するか、または集合関数の引数でなければなりません。 – jarlh

答えて

1

と思いますが、あなたの集計。不特定の列はどうすればよいですか?

あなたの最初のクエリでby`グループ `で` v.title`を追加

1

を提案することができます。ただ、次の試してみてくださいgroup by

select v.title, isnull(nullif(va.source,''), 'Unknown') source, COUNT(va.source) apps 
from [VacancyApplication] as va inner join [Vacancy] as v on v.id= va.vacancyid 
group by source, v.title 
1

によってグループにv.titleを追加する必要があります

2

にタイトルを追加:によって、グループに独自のマルチコルキーを作成し、適用し、行を繰り返し処理、集計が何をしているかの

SELECT v.title, isnull(nullif(va.source,''), 'Unknown') source, COUNT(va.source) apps 
    FROM [VacancyApplication] AS va 
    INNER JOIN [Vacancy] AS v on v.id= va.vacancyid 
    GROUP BY v.title, isnull(nullif(va.source,''), 'Unknown') 
関連する問題