SQL查询仅获取值等于当前日期的列

时间:2019-01-02 11:23:53

标签: sql tsql

需要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  |

2 个答案:

答案 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来获取变量列名称。