use*_*364 1 sql sql-server-2008
我在这里想要实现的是传递一周中的参数,该参数保存当前日期的值(星期三等),并将其与列名进行比较,以确定在where子句中使用哪一列.
所以在星期日 - 星期六采取列.在where子句中,我想将这些列名称与我传入的参数进行比较,并仅返回匹配的值.
下面的表格称为DayTable
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
1 1 1 1 1 1 0
1 1 1 1 1 1 1
SELECT *
FROM DayTable
WHERE ColumnName = @DayOfWeek
Run Code Online (Sandbox Code Playgroud)
如果可能的话,这就是我想要实现的目标.我在看,ColumnProperty但我认为这不是我需要的.
由于您的数据未规范化,您可以使用该UNPIVOT函数将数据放入行中,以便于查询:
select col, value
from DayTable
unpivot
(
value
for col in ([Sunday], [Monday], [Tuesday], [Wednesday],
[Thursday], [Friday], [Saturday])
) unpiv
where col = @DayOfWeek
Run Code Online (Sandbox Code Playgroud)
您的问题的最佳解决方案是将表重新设计为以下内容:
create table DayTable
(
DayName varchar(20),
Value int
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1305 次 |
| 最近记录: |