gpt4 book ai didi

sql - 查询笨拙存储的数据

转载 作者:行者123 更新时间:2023-12-04 20:23:19 24 4
gpt4 key购买 nike

对于含糊不清的标题表示歉意,但这更多的是征求意见,而不是寻找直接的答案。作为引用,我使用的是 SSMS 2014。

我正在使用一个不是我创建的数据库,并且我正在努力使用当前格式的数据。我在下表中包含了一个示例。

+-----+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|DtID | ID | Mo1 | Mo2 | Tu1 | Tu2 | We1 | We2 | Th1 | Th2 | Fr1 | Fr2 |
+-----+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| 565 | 12 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
| 565 | 13 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
| 565 | 14 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 |
| 565 | 15 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
| 572 | 12 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| 572 | 13 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
| 572 | 14 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
| 572 | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
+-----+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+

DtID 是一个星期的开始日期标识符,ID 是一个人的标识符,Mo1 代表星期一上午,Mo2 星期一下午,等等。1 表示参加该 session 的人。该表超过 60 万行。

我的问题发生在尝试查询特定日期范围之间的数据时,例如我想找到日期标识 566 和 575 之间的当前出勤标记总和。日期 566 指的是从 565 和 575 开始的星期二将指的是从 572 开始的一周的星期四。

我会更喜欢下面格式的表格(以第 1 行为例)。

+-----+----+------+---------+
|DtID | ID | AMPM | Present |
+-----+----+------+---------+
| 565 | 12 | 1 | 0 |
| 565 | 12 | 2 | 1 |
| 566 | 12 | 1 | 0 |
| 566 | 12 | 2 | 1 |
| 567 | 12 | 1 | 1 |
| 567 | 12 | 2 | 0 |
| 568 | 12 | 1 | 0 |
| 568 | 12 | 2 | 0 |
| 569 | 12 | 1 | 1 |
| 569 | 12 | 2 | 0 |
+-----+----+------+---------+

这可能吗?有没有一种有效的方法可以按原样查询数据?我对 SQL 还很陌生,到目前为止,我几乎所有的学习都来自于解释这个网站上的问题和答案。正如我所说,我真的不知道我在寻找什么的答案,所以这里用户的集体建议和智慧对我非常有用。

非常感谢。

最佳答案

我认为您不想泄露当天的信息

select  DtID,ID,left(day,2) as day,right(day,1) as AMPM,Present 

from t unpivot (Present for day in (Mo1,Mo2,Tu1,Tu2,We1,We2,Th1,Th2,Fr1,Fr2)) t

+------+----+-----+------+---------+
| DtID | ID | day | AMPM | Present |
+------+----+-----+------+---------+
| 565 | 12 | Mo | 1 | 0 |
+------+----+-----+------+---------+
| 565 | 12 | Mo | 2 | 1 |
+------+----+-----+------+---------+
| 565 | 12 | Tu | 1 | 0 |
+------+----+-----+------+---------+
| 565 | 12 | Tu | 2 | 1 |
+------+----+-----+------+---------+
| 565 | 12 | We | 1 | 1 |
+------+----+-----+------+---------+
| 565 | 12 | We | 2 | 0 |
+------+----+-----+------+---------+
| 565 | 12 | Th | 1 | 0 |
+------+----+-----+------+---------+
| 565 | 12 | Th | 2 | 0 |
+------+----+-----+------+---------+
| 565 | 12 | Fr | 1 | 1 |
+------+----+-----+------+---------+
| 565 | 12 | Fr | 2 | 0 |
+------+----+-----+------+---------+
| 565 | 13 | Mo | 1 | 0 |
+------+----+-----+------+---------+
| 565 | 13 | Mo | 2 | 0 |
+------+----+-----+------+---------+
| 565 | 13 | Tu | 1 | 1 |
+------+----+-----+------+---------+
| 565 | 13 | Tu | 2 | 1 |
+------+----+-----+------+---------+
| 565 | 13 | We | 1 | 1 |
+------+----+-----+------+---------+
| 565 | 13 | We | 2 | 1 |
+------+----+-----+------+---------+
| 565 | 13 | Th | 1 | 0 |
+------+----+-----+------+---------+
| 565 | 13 | Th | 2 | 0 |
+------+----+-----+------+---------+
| 565 | 13 | Fr | 1 | 0 |
+------+----+-----+------+---------+
| 565 | 13 | Fr | 2 | 0 |
+------+----+-----+------+---------+

关于sql - 查询笨拙存储的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40932247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com