![](/img/trans.png)
[英]SQL Server : how to select first and last value within a date range grouped by user
[英]How to select first entry of the day grouped by user in SQL
我四處張望,無法完全掌握從MS Access 2000表中提取數據所需的SQL查詢問題的全部答案。
下面是[Time Sub]表的示例:
**CLIENT_ID, DATE_ENTERED, CODE, MINUTES**
11111, 5/12/2008 3:50:52 PM, M, 38
11111, 5/12/2008 2:55:50 PM, M, 2
11714, 5/13/2008 1:15:32 PM, M, 28
11111, 5/13/2008 6:15:12 PM, W, 11
11112, 5/12/2008 2:50:52 PM, M, 89
11112, 5/12/2008 5:10:52 PM, M, 9
91112, 5/14/2008 1:10:52 PM, L, 96
11112, 5/12/2008 5:11:52 PM, M, 12
我需要為每個客戶選擇代碼不是L或W的每一天的第一個條目。
我知道這可以在SQL語句中完成,但是我不知道如何做到。 我可以接近,但永遠都不會想出正確的輸出。
任何幫助表示贊賞。
謝謝,邁克
Select ...
From Table As T
Where Date_Entered = (
Select Min(T2.Date_Entered)
From Table As T2
Where T2.Client_Id = T.Client_Id
And DateDiff("d", 0, T2.Date_Entered) = DateDiff("d", 0, T.Date_Entered)
And T2.Code Not In("L","W")
)
我從未使用過MS Access,因此您可能必須糾正SQL差異:
select * from [Time Sub] A
where
DATE_ENTERED = (
select top 1 DATE_ENTERED
from [Time Sub] B
where
Int(A.DATE_ENTERED) = Int(B.DATE_ENTERED)
and A.CLIENT_ID = B.CLIENT_ID
order by
DATE_ENTERED
)
and (CODE <> 'L')
and (CODE <> 'W')
旋轉一下。 我認為這就是您要的。
SELECT
[Time Sub].CLIENT_ID,
[Time Sub].CODE,
MinDate.TheDay
FROM
[Time Sub] INNER JOIN
(
SELECT
[Time Sub].CLIENT_ID,
MIN([Time Sub].DATE_ENTERED) as MinimumDate,
Format([Time Sub].DATE_ENTERED, "YYYY-MM-DD") AS TheDay
FROM
[Time Sub]
GROUP BY
[Time Sub].CLIENT_ID,
Format([Time Sub].DATE_ENTERED, "YYYY-MM-DD")
) AS MinDate
ON MinDate.MinimumDate = [Time Sub].DATE_ENTERED AND MinDate.CLIENT_ID = [Time Sub].CLIENT_ID
WHERE
[Time Sub].CODE NOT IN ("L", "W")
我在使用其他人已經做過的事情后才弄清楚了。 這是我想出的:
SELECT [Time sub].CLIENT_ID,
[Time sub].Code,
[Time sub].Minutes,
FirstDay.MinEntry
FROM [Time sub]
INNER JOIN [
SELECT
[Time sub].CLIENT_ID,
MIN([Time sub].[Date_Entered]) AS MinEntry
FROM
[Time sub]
WHERE
[Time sub].Code NOT IN ("T", "L")
GROUP BY
[Time sub].CLIENT_ID,
DateValue([Time sub].[Date_Entered])
].AS FirstDay
ON FirstDay.MinEntry = [Time sub].[Date_Entered]
ORDER BY FirstDay.MinEntry, [Time sub].CLIENT_ID;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.