sql - 如何编写从源数据表计算结果集列的 SQL 查询
问题描述
我有一个类似于下一个示例的数据表(#t_timevalue):
Time Value
-------------
t1 v1
t1 v2
t1 v3
t2 v1
t2 v3
t3 v1
t4 v2
t4 v3
我正在尝试创建一个查询来汇总数据,如下所示:
Time v1 v2 v3
t1 1 1 1
t2 1 0 1
t3 1 0 0
t4 0 1 1
where (ti,vj) = 1 if record (ti,vj) record appeared in #t_timevalue
(ti,vj) = 0 elsewhere
是否可以使用 SQL 产生这样的输出?
或者至少是目标摘要信息:
1 1 1
1 0 1
1 0 0
0 1 1
编辑
该列Value
包含未知值,它们的数量似乎很大。将这个报告推送到应用层而不是数据库来操作的推荐解决方案是什么?
解决方案
枢轴运算符也适用于您。
create table testrr
(
[Time] varchar(30),
[Value] varchar(30)
)
insert into testrr values
('t1','v1'),
('t1','v2'),
('t1','v3'),
('t2','v1'),
('t2','v3'),
('t3','v1'),
('t4','v2'),
('t4','v3')
SELECT
[Time],[v1],[v2],[v3]
FROM
(
SELECT
[Time],[Value],1 AS NUMBER
FROM testrr
) SRC
PIVOT
(
count(NUMBER) FOR [Value] IN ([v1],[v2],[v3])
) pvt
--Output
/*
Time v1 v2 v3
------------------------------ ----------- ----------- -----------
t1 1 1 1
t2 1 0 1
t3 1 0 0
t4 0 1 1
*/
此致,
将要
推荐阅读
- javascript - 是否可以使用 Promise 连接字符串数组
回报承诺 在打字稿/javascript中? - c++ - 散列无序容器而不需要为该类型实现比较运算符
- python - VarScope 中设置reuse=True 或reuse=tf.AUTO_REUSE 是什么意思?
- css - 在 CSS 中的选项卡重叠上添加阴影
- python - 在 uWSGI 运行的烧瓶应用程序中以 sudo 身份运行 shell 脚本时的身份验证错误
- javascript - 在 Custom Next.js App 组件中没有继承 React 道具
- javascript - 将新对象添加到从 Fetch 返回的对象的键中,并且需要重新获取新的附加值
- spring - Spring @Value 注入转换在 @SpringJUnitConfig 测试中不起作用
- ruby-on-rails - 如何使用补丁请求更新 Rails 中的布尔属性
- ios - 将视图作为参数添加到自定义 ViewModifier