大佬教程收集整理的这篇文章主要介绍了如何使用SQL创建矩阵,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这似乎可以解决问题,并在PostgreSQl 9.1上进行了测试。几乎肯定会需要对它进行调整以使其适合sql Server(任何人都可以随时更新我对此的回答)。
SELECT start AS state,
SUM((dest = 'MA')::int) AS MA,
SUM((dest = 'NJ')::int) AS NJ,
SUM((dest = 'NY')::int) AS NY,
SUM((dest = 'OH')::int) AS OH
FROM (
SELECT state1 AS start, state2 AS dest
FROM routes
union all
SELECT state2 AS start, state1 AS dest
FROM routes
) AS s
GROUP BY start
ORDER BY start;
但是请注意,我的输出与您的输出略有不同-我不确定这是因为您的示例输出是错误的,还是因为我误解了您的要求:
state | ma | nj | ny | oh
-------+----+----+----+----
MA | 0 | 0 | 1 | 1
NJ | 0 | 0 | 1 | 0
NY | 1 | 1 | 0 | 0
OH | 1 | 0 | 0 | 0
(4 rows)
此查询的工作方式是查询表两次,一次查询state1-> state2路由,第二次查询state2-> state1路由,然后将它们连接在一起UNION
ALL
。
然后,对于每个目标状态,它sum()
为该行的原始状态运行一个。
该策略应易于适应任何RDBMS。
使用这样的地理数据记录:
START | END
CITY1 | STATE1 | CITY2 | STATE2
----------------------------------------------
New York | NY | Boston | MA
Newark | NJ | Albany | NY
Cleveland| OH | Cambridge | MA
我想输出类似这样的内容,其中它以矩阵形式显示START / END配对:
| MA | NJ | NY | OH
------------------------------
MA | 0 | 0 | 1 | 0
NJ | 0 | 0 | 1 | 0
NY | 1 | 0 | 0 | 0
OH | 1 | 0 | 0 | 0
我可以看到如何GROUP BY
以及COUNT
将如何找到数据,但是我对如何显示为矩阵一无所知。有人有什么想法吗?
以上是大佬教程为你收集整理的如何使用SQL创建矩阵全部内容,希望文章能够帮你解决如何使用SQL创建矩阵所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。