需要SQL逻辑
我有一个表,其列名称为EID,Emp_name,1、2、3、4、5、6、7 ....直到31(第1到31列是日历日期) 现在,我尝试仅获取3列EID,EMP_name和日期(等于sys日期)。
示例
今天SYS_date是2019年1月2日
我需要像这样的值= 2的列...
EID Emp_name 2 |
123 James SCOTT P |
133 Mark M A |
133 Mark Man P |
答案 0 :(得分:0)
尝试这样:
declare @sql nvarchar(max)
set @sql = 'select EID, Emp_name, [' + convert(nvarchar(2),day(getdate())) + '] as d from tableName '
exec(@sql)
答案 1 :(得分:0)
一种解决方法是取消数据透视。这是一种方法:
select t.eid, t.emp_name, v.n
from t cross apply
(values ([1]), ([2]), ([3]), . . ., ([4])
) v(n)
where v.n = day(getdate());
我会提醒您,列名是固定名称,而不是2
。 SQL查询具有固定的列名。您将需要使用动态sql来获取变量列名称。