Result
がわかっている場合は、上記のbbrummの回答を使用できます。 Result
複数ある場合は、あなたは、動的なクロス集計使用することができます。
CREATE TABLE Tbl(Code INT, Date Date, Result VARCHAR(10));
INSERT INTO Tbl VALUES
(1, '06/01/2017', 'A'),
(1, '06/03/2017', 'A'),
(2, '06/05/2017', 'A'),
(2, '06/07/2017', 'B'),
(1, '06/01/2017', 'A'),
(1, '06/03/2017', 'B'),
(1, '06/05/2017', 'C'),
(2, '06/07/2017', 'C');
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql =
'SELECT
code
, COUNT(Result) AS TotalCount' + CHAR(10);
SELECT @sql = @sql +
' , SUM(CASE WHEN Result = ''' + Result + ''' THEN 1 ELSE 0 END) AS ' + QUOTENAME('Count' + Result) + CHAR(10)
FROM (SELECT DISTINCT Result FROM Tbl) t;
SELECT @sql = @sql +
'FROM Tbl
GROUP BY Code
ORDER BY Code';
PRINT(@sql);
EXEC sp_executesql @sql;
DROP TABLE Tbl;
ONLINE DEMO
のようなそれはA、B、Cだけですか? –
'GROUP BY'を実行します。条件付き集計を行うには、 'case'式を使用します。 – jarlh