SQLの集計方法について

coconan
2013-09-09 18:43 1878 2
SQLの集計方法について、
下記のようなtblがあるとして、Date毎にstatusを集計したいのですが、
statusが「正常」と「異常」がある中で、すべて「正常」なら「正常」
1件でも「異常」がある
場合は「異常」を出力する

date user status
2013/8/15 USER1 正常
2013/8/15 USER2 正常
2013/8/16 USER1 正常
2013/8/16 USER2 異常

<集計> 
date status
2013/8/15 正常
2013/8/16 異常

コメント

2013年 09月 10日 (18:57)
こんにちは。
イノ(inno)です。

結論から言いますと下記のSQLを利用すればできます。

SELECT [date], MIN([status]) AS [date]
FROM [テーブル名]
GROUP BY [date]

他の方の為にテストSQLを作成しましたので、
下記のSQLを利用して動作の確認をしてください。

-- #### 一時テーブル作成
CREATE TABLE #TempData
(
[date] date
,[user] varchar(10)
,[status] nvarchar(10)
)
GO

-- #### テストデータを登録
INSERT INTO #TempData
SELECT '2013/8/15', 'USER1', N'正常' UNION ALL
SELECT '2013/8/15', 'USER2', N'正常' UNION ALL
SELECT '2013/8/16', 'USER1', N'正常' UNION ALL
SELECT '2013/8/16', 'USER2', N'異常'
GO

-- #### 結果
SELECT [date], MIN([status]) AS [date]
FROM #TempData
GROUP BY [date]
coconan 2013年 09月 10日 (21:55)
イノさんへ
ありがとうございます!
無事思い通りのものができました!助かります