2017-03-10 5 views
1

をMINとMAX値を選択:私はこのようなテーブルを持って一つの行(SQLサーバー)で同じIDを持つ一つのテーブルから

| ID |  Date   |  IN   |  OUT   | 
|----|---------------------|--------------------|--------------------| 
| 20 |  2017-03-01  |2017-03-01 08:00:00 |2017-03-01 17:00:00 | 
| 21 |  2017-03-01  |2017-03-01 07:00:00 |2017-03-01 17:10:00 | 

| ID |  Date   | 
|----|---------------------| 
| 20 | 2017-03-01 08:00:00 | 
| 20 | 2017-03-01 17:00:00 | 
| 21 | 2017-03-01 07:00:00 | 
| 21 | 2017-03-01 17:10:00 | 

は、どのように私はこのような結果を表示することを選択することができます

私は、クエリを見つけることができません、よろしくお願いします。ありがとうございました

+0

SELECT ID, to_char(DATE, 'yyyy-mm-dd'), MIN(DATE) AS IN, MAX(DATE) AS OUT FROM Absensi_Log outer GROUP BY ID,to_char(DATE, 'yyyy-mm-dd') 

? –

+0

お返事ありがとうございます。これは私がしたことです:SELECT ID、Datel、(SELECT MIN(日付)FROM Absensi_Logどこの日付 '2017-03-01 00:00:00' AND '2017-03-09 23: 59:59 ')Absensi_Logから(' 2017-03-03 00:00:00 'と' 2017-03-09 23:59:59 'の間)Absensi_LogからのAbsensi_LogからのSELECT MAX(日付)どこの日付 '2017-03-03 00:00:00' AND '2017-03-09 23:59:59' GROUP BY ID、日付 –

答えて

2

次のクエリを使用することができます。

SELECT id, MIN(date), MAX(date) FROM yourTable GROUP BY id 
1

以下のクエリは、各IDのOUT時間としてIN時間と最大日として最小日を返します。

SELECT ID,CONVERT(DATE,([DATE])) AS [DATE],MIN([DATE]) AS [IN],MAX([DATE]) AS [OUT] 
FROM TABLE1 
GROUP BY ID,CONVERT(DATE,([DATE])) 

注: - 列名としてSQLキーワードを使用しないでください(例; - OUT DATE、IN、...)

+0

それは魅力のように機能します!助けてくれてありがとう! –

+0

@ YohanWijayanto、問合せに問題を引き起こす列名(例:-DATE、IN、OUT ...)としてSQL KEYWORDを使用しないでください。 –

+0

アドバイスありがとうございます!、私はキーワードを変更します。 –

0

THIS TRY:集計関数MIN,MAXGROUP BYが解決します

select id, cast(Edate as Date) EDate, min(Edate) inTime, max(Edate) outTime 
from myTable 
group by id, cast(Edate as Date) 

OUTPUT

あなたの問題とは、あなたに以下のように予想される結果を提供します3210
id EDate  inTime     outTime 
20 2017-03-01 2017-03-01 08:00:00.000 2017-03-01 17:00:00.000 
21 2017-03-01 2017-03-01 07:00:00.000 2017-03-01 17:10:00.000 
+0

偉大な答えをありがとう!、私はあなたの助けなしにそれを把握することはできません。ありがとうございました! –

0

以下のクエリを試してください。あなたがこれまでにしようとしているものをサブクエリ

SELECT 
    ID, 
    (SELECT 
    to_char(DATE, 'yyyy-mm-dd') 
    FROM Absensi_Log sub 
    WHERE sub.id = outer.id 
    GROUP BY to_char(DATE, 'yyyy-mm-dd')), 
    MIN(DATE) AS IN, 
    MAX(DATE) AS OUT 
FROM Absensi_Log outer 
GROUP BY ID 
0
CREATE TABLE #TEMP (Id INT,[Date] DATETIME) 
INSERT INTO #Temp 
SELECT 20,'2017-03-01 08:00:00' UNION ALL 
SELECT 20,'2017-03-01 17:00:00' UNION ALL 
SELECT 21,'2017-03-01 07:00:00' UNION ALL 
SELECT 21,'2017-03-01 17:10:00' 

SELECT Id,CONVERT(DATE,[Date],103)[Date],Min([Date]) DateIN,Max([Date]) DateOUT FROM #Temp 
GROUP BY Id,CONVERT(DATE,[Date],103) 

DROP TABLE #Temp 
関連する問題