2016-07-13 4 views
1

システム定義(Project Server)によって「タスク」であるレコードがあります。 は、各タスクの行のために使用されている複数の列があり、そしていくつかのタスクが異なる日付やその他の情報があるかもしれませんが、私は2列に同じデータを持つレコードを数えるか、マージしたい:"Tool ID""Activity type"類似のIDを持つ2つのレコードを2列に1つとして数えるには?

例えば:私は同様のツールのIDとアクティビティタイプの2つのレコード(インデックス:741743)を持つようにしたい

Task Index  Finish Date  Activity type  Tool ID  ... 

741    3/20/2016  T1     10
742    3/28/2016  Delay T1   10
743    4/2/2016  T1     10
744    4/10/2016  T2     10
... 
... 

1.

としてカウントされるためには、私は出力に必要な日付、インデックスと他の列を無視し、私のレポートにはフィールドを置いています。 "100123"と "T1"を1に設定してください。

試してみましたが、別の方法でグループ化しましたが、うまくいきませんでした。

+0

を以下試してみてください - あなたは出力に表示する必要のある日、二つのレコードを結合している場合は? – Arvo

+1

結果を表示したいのですか? –

+0

これは 'group by 'を必要とするシナリオの完璧な例のように聞こえるので、"うまくいかなかった "と言ったらどういう意味ですか?あなたが試した質問とあなたが見ている問題を共有できますか? –

答えて

0

たぶん、あなたは二つのフィールドを連結でき、明確なそれらを数える:

count(distinct (tool_id||activity_type)) 
0

カウントを行い、その後、元のデータとそれを組み合わせることCTEを使用しました。

WITH CTE1 AS (
    SELECT [Tool ID], [Activity type], COUNT(*) [MyCount] 
    FROM @MyTable 
    GROUP BY [Tool ID], [Activity type] 
    ) 
SELECT A.*, C.MyCount 
FROM @MyTable A INNER JOIN CTE1 C 
    ON A.[Activity type] = C.[Activity type] AND 
     A.[Tool ID] = C.[Tool ID] 
0

「日付を無視...私は出力に必要な」クエリ

DECLARE @Tbl TABLE ([Task Index] INT, [Finish Date] DATETIME, [Activity type] NVARCHAR(50), [Tool ID] INT) 

INSERT INTO @Tbl VALUES (741, N'3/20/2016', 'T1', 100123) 
INSERT INTO @Tbl VALUES (742, N'3/28/2016', 'Delay T1', 100123) 
INSERT INTO @Tbl VALUES (743, N'4/2/2016', 'T1', 100123) 
INSERT INTO @Tbl VALUES (744, N'4/10/2016', 'T2', 100123) 

SELECT 
    COUNT(*) AS YourCount -- Output 3 
FROM 
(
    SELECT DISTINCT  
     T.[Activity type], 
     T.[Tool ID]  
    FROM 
     @Tbl T 
) A 
関連する問題