2017-11-10 26 views
0

2つのクエリがあります。最初はそれぞれのカウントと一緒に私のBusinessUnitIdsのリストを与える:私はこの結果にBusinessUnitIdsを取り、BusinessUnitIdsに関連したビジネスユニット名を取得する2番目のクエリにそれらを結合したい別のクエリで1つのクエリの結果を結合する

SELECT [b].[BusinessUnitId], COUNT([b].[BusinessUnitId]) AS bucount 
         FROM  [dbo].[ComponentTeamBusinessUnit] [b] 
         WHERE [b].[GlobalClientFiscalYearId] = @GlobalClientFiscalYearId 
         AND  [b].[ComponentTeamId] IN (SELECT items FROM [dbo].[fnSplit](@ComponentTeamIds, ',')) 
         GROUP BY [b].[BusinessUnitId]) 

。次のようなものがあります。

最終的に、私が望むのは、それぞれの数と一緒にビジネス名のリストです。私はこれを行う方法を理解することができませんでした。誰も助けることができますか? 1つのステートメントで両方のクエリを実行するのは最優先です。ありがとうございました。

+0

スキーマのスニペットを少し追加して、モデルとしての作業を確認できますか? – raykrow

+0

Microsoft SQL Serverの使用。 2番目のクエリは疑似コードです。最初のクエリが機能します。 –

+0

あなたは最初のクエリの結果に基づいて結合する必要はありません。単に結合を行います.A.BusinessUnitId、B.nameでグループ化します。一致しない場合のみ、AとBは結合テーブルのエイリアスです。変化する可能性があります – LONG

答えて

1

Exmaple:

SELECT [b].[BusinessUnitId],A.Name, COUNT([b].[BusinessUnitId]) AS bucount 
         FROM  [dbo].[ComponentTeamBusinessUnit] [b] 
         LEFT JOIN NameTable as A 
         ON A.BusinessUnitId = b.BusinessUnitId 
         WHERE [b].[GlobalClientFiscalYearId] = @GlobalClientFiscalYearId 
         AND  [b].[ComponentTeamId] IN (SELECT items FROM [dbo].[fnSplit](@ComponentTeamIds, ',')) 
         GROUP BY [b].[BusinessUnitId],A.Name 

のテーブルがマンツーマンであれば、多くの1つあれば、きちんとだろう、あなたは次のように結果が表示されます。

id name count 
1 A  5 
1 B  6 

そして、あなたがグループにしたい場合はid 1 、取得する:

id name count 
1 A,B 11 

FOR XML PATH()と一緒に使用する必要がありますSTUFF、またはSTRING_SPLITは実際のケースによって異なります。

+0

一般的に言えば、それは動作しますほとんどの場合、それはテーブルの関係、1対1、または1対多などに依存します。 – LONG

+0

それは働いた!どうもありがとうございます! –

+0

yw yw yw;)@DightMendoza – LONG

関連する問題