2017-04-05 9 views
1

状況がありますかどうかわかりません。
私は、私が参加してカウントを使用するために必要な2つのテーブルを持っています。SQL 2012ジョインで複数のテーブルから複数のクエリを結合し、1つのテーブルに数えます

表1 = "EPM_ProjectUserview"

[ProjectUID], [ProjectName], [EnterpriseProjectTypeUID](used as a filter) 

表2 = "EpmTask_UserView"

[ProjectUID],[Task_Significance], [TaskPercentCompleted] then 3 count fields 
[total Count], [Count 100% complete], Count <1005] 

この私にこの
NOTEのように見えるテーブルを与えるだろう。その最初の列がありますプロジェクト名に適合しませんでした

|Apps|Overall% Comp| Totl Count|100% Compl|Not 100% Comp|Overall Health| 

のインターフェイスに同じ行が全体の%が完了し、サマリータスク
から来るの全体的な健康

本当だろう(これは、プロジェクトのサーバーです)
ProjectUIDは加入のための重要な分野です。

私は5つの異なるクエリを使用していますが、もちろん1つのテーブルに必要です。

クエリ1 - これはこれは私に、各タイプ

SELECT p.[ProjectName] 
    ,T.[Task_Significance] 
-- ,T.[TaskPercentCompleted] 
    ,count (*) as [Total Count] 
    FROM [psmado].[dbo].[MSP_EpmProject_UserView] as P 
    join [PSMADO].[dbo].[MSP_EpmTask_UserView] as T 
    On T.[projectUID] = P.[projectUID] 
    where 
    ([Task_Significance] like 'App' 
    Or 
    [Task_Significance] like 'Interface') 
    Group by [ProjectName], [Task_Significance] 

クエリの3-次のクエリの合計数を示します

SELECT [ProjectName] 
    ,[ProjectUID] 
    ,[EnterpriseProjectTypeUID] 
    FROM [dbo].[MSP_EpmProject_UserView] 
where [projectUID] not like '0000CF75-FB12-4FFC-A404-AEC4F3258A9C' 
And 
[EnterpriseProjectTypeUID] like '76194144-3CDB-E611-9419-00215A9259E8' 
order by [ProjectName] 

クエリ2 projectUIDとEnterpriseprojecttypeUIDは私に100を与えるプロジェクト名です%完全列

  SELECT p.[ProjectName] 
    ,T.[Task_Significance] 
-- ,T.[TaskPercentCompleted] 
    ,count (*) as [Count] 
FROM [psmado].[dbo].[MSP_EpmProject_UserView] as P 
join [PSMADO].[dbo].[MSP_EpmTask_UserView] as T 
On T.[projectUID] = P.[projectUID] 
    where T.[TaskPercentCompleted] >= 100 
    and 
([Task_Significance] like 'App' 
Or 
[Task_Significance] like 'Interface') 
    Group by [ProjectName], [Task_Significance] 

クエリ4 - 次のクエリは、 nは100%完全

SELECT p.[ProjectName] 
    ,T.[Task_Significance] 
-- ,T.[TaskPercentCompleted] 
    ,count (*) as [Count] 
FROM [psmado].[dbo].[MSP_EpmProject_UserView] as P 
join [PSMADO].[dbo].[MSP_EpmTask_UserView] as T 
On T.[projectUID] = P.[projectUID] 
where T.[TaskPercentCompleted] < 100 
and 
([Task_Significance] like 'App' 
Or 
[Task_Significance] like 'Interface') 
Group by [ProjectName], [Task_Significance] 

クエリー5は、最後にタスク全体の健全性と完全な%は

SELECT [dbo].[MSP_EpmProject_UserView].[ProjectName] 
    ,[dbo].[MSP_EpmTask_UserView].[ProjectUID] 
    ,[dbo].[MSP_EpmTask_UserView].[TaskName] as [Name] 
    ,[dbo].[MSP_EpmTask_UserView].[TaskPercentCompleted] as [% Complete] 
    ,[dbo].[MSP_EpmTask_UserView].[Task Health] as [Health] 
    ,[dbo].[MSP_EpmTask_UserView].[Task_Significance] 
    ,[dbo].[MSP_EpmTask_UserView].[TaskOutlineNumber] 
    FROM [dbo].[MSP_EpmTask_UserView] 
    inner join [PSMADO].[dbo].[MSP_EpmProject_UserView] 
    on [dbo].[MSP_EpmTask_UserView].[projectuid] = [PSMADO].[dbo].[MSP_EpmProject_UserView].[ProjectUID] 
    where [dbo].[MSP_EpmTask_UserView].[projectUID] not like '0000CF75-FB12-4FFC-A404-AEC4F3258A9C' -- the timesheet project null 
    and [Task_Significance] like 'App Summary' 
or [Task_Significance] like 'Interface Summary' 
order by [ProjectName], [TaskOutlineNumber] 

が、これらは(組合がのために働いていない一つのテーブルに入れることができ、テーブル内の別の行から来ています私)そしてもしそうならどのように?

助けてくれてありがとう

ジャックの回答は非常に近いです。これは私が必要なものです: enter image description here

これは私が得ているものです。それぞれのセクションで繰り返されているだけです。 (私はそれの一部を切り落としが、36行があります。)

enter image description here

+0

dbスキーマ、サンプルデータ、予想される出力を表示します。 \t [** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t [**スタート**] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)質問品質を改善し、より良い回答を得る方法を学ぶことができます。 –

+0

「これを一つのテーブルに入れることができますか?」 –

答えて

1

最高とここにあなたのための最も簡単な方法は、共通テーブル式を使用して... ..です そのは私がすべてをペーストすることができませんこの式ではコードを書くことができますが、次の構文を使用するとかなり簡単です。

;(これらの括弧内の完全なあなたの第一クエリを貼り付け)としてT1と、として t2は、(これらの括弧内の完全なあなたの第三のクエリを貼り付け) T4などとして、 T3を(これらのカッコ内の完全なあなたの第二のクエリを貼り付け) (これらの括弧内に4番目のクエリが完全にペーストされます) t5 as(これらの括弧内に5番目のクエリが完全にペーストされます)

これが完了したら、次にクエリを作成し、必要なデータを抽出します。例えば

選択t1.abc、t2.abc、t3.xyz、t4.lmn、t1からt5.xyz、T2、T3、T4、T5

・ホープ、このことができます。

+0

ありがとう、ジャックこれは非常に近いですが、私はいくつかの結果を得ていますが、私が期待しているものではありません。私はアップデートで自分の質問を編集しています。 – Bob

2

ご協力いただきありがとうございます。これは素晴らしいコミュニティです!だから私はジャックの思考が私を道につけたのとは違った方向に行きました。

SELECT pr.[ProjectName] 
,T.[Task_Significance] 

    , sum (case when T.[TaskPercentCompleted] is not null and T.[Task_Significance] ='App' Or T.[TaskPercentCompleted] is not null and T.[Task_Significance] = 'Interface' then 1 else 0 end) as [Total] 
, sum (case when T.[TaskPercentCompleted] < 30 and T.[Task_Significance] ='App' Or T.[TaskPercentCompleted] < 30 and T.[Task_Significance] = 'Interface' then 1 else 0 end) as [Incomplete] 
, sum (case when T.[TaskPercentCompleted] >= 30 and T.[Task_Significance] ='App' Or T.[TaskPercentCompleted] >= 30 and T.[Task_Significance] = 'Interface' then 1 else 0 end) as [Complete] 
    FROM [psmado].[dbo].[MSP_EpmProject_UserView] as Pr 
join [PSMADO].[dbo].[MSP_EpmTask_UserView] as T 
On T.[projectUID] = Pr.[projectUID] 
Where 
T.[Task_Significance] like 'App' 
Or 
T.[Task_Significance] like 'Interface' 

Group by pr.[ProjectName], T.[Task_Significance] 
関連する問題