我有类似
的sqlselect
name,col2,col3,date
from
table1 join on few tables
结果是
name col2 col3 date
a a a datetime1
a a a datetime1
b b b datetime2
b b b datetime3
并且我不知道该怎么做,但我需要将日期列替换为列 显示每个名称/行的工作日数
我虽然关于子查询,如
,(select COUNT(distinct DATENAME(dw, date) NOT IN ('Saturday', 'Sunday')) where name = '...' from ... where ...) as WorkingDays
但我需要帮助才能让它正常工作,谢谢。
答案 0 :(得分:2)
也许你想要这个:
SELECT Name, C2,
WorkingDays = Sum(CASE WHEN Datename(DW, [date])IN( 'Saturday', 'Sunday' )
THEN 0 ELSE 1 END)
OVER (PARTITION BY Name)
FROM dbo.data
以下是样本数据的sql-fiddle:http://sqlfiddle.com/#!3/1279f/14/0
答案 1 :(得分:1)
如果我的理解没有错,你只需要一个其他列的组合并计算' date'
select
name,col2,col3,count(date) as no_of_days
from
table1 join on few tables
where DATENAME(dw, date) NOT IN ('Saturday', 'Sunday')
group by name,col2,col3