Abe*_*ler 5 sql sql-server sql-server-2005
我试图这样做:
SELECT COUNT(*),
(
SELECT COUNT(*) FROM attend
WHERE (DATEPART(WEEKDAY,start_date) = 2 OR DATEPART(WEEKDAY,start_date) = 6)
AND empl_no = 12345
)
FROM attend as a
WHERE empl_no = 12345
Run Code Online (Sandbox Code Playgroud)
但这看起来有点难看.有一个更好的方法吗?
nat*_*e c 10
使用:
SELECT COUNT(*) AS total,
SUM(CASE
WHEN DATEPART(WEEKDAY, t.start_date) IN (2,6) THEN 1
ELSE 0
END) AS weekday
FROM ATTEND t
WHERE t.empl_no = 12345
Run Code Online (Sandbox Code Playgroud)
您可以使用CTE:
WITH T1 AS (
SELECT DATEPART(WEEKDAY,start_date) AS weekday
FROM attend
WHERE empl_no = 12345
)
SELECT
(SELECT COUNT(*) FROM T1) AS total,
(SELECT COUNT(*) FROM T1 WHERE weekday = 2 OR weekday = 6) AS subset
Run Code Online (Sandbox Code Playgroud)