例如我有一张桌子
IPPARSED
127
0
0
1
现在我需要旋转桌子所以它可以像这样
1 2 3 4
127 0 0 1
你能帮我怎么做吗?
假设行总是按该顺序排列,您可以尝试使用 case 语句来透视表:
SELECT (case when (<condition to match first octet>) then IPPARSED else END) as 1,
(case when (<condition to match second octet>) then IPPARSED else END) as 2,
(case when (<condition to match third octet>) then IPPARSED else END) as 3,
(case when (<condition to match fourth octet>) then IPPARSED else END) as 4
FROM <insert_table_name_or_table_definition_here>
参照。Anthony Mollinaro 的SQL 食谱第 365 页。
编辑:如果您在提出 a 时遇到问题<condition to match (...) octet>
,您需要对查询结果进行 select 操作,以某种方式将行号添加到您的表中。在 Oracle 中,您将使用 rownum 伪列,但在 SQL Server 中不存在。在 SQL Server 2005 中,您确实可以将ROW_NUMBER()
内置函数用作列,或者可能将该IDENTITY(...)
函数用作该查询中的列。
嗨,您的表中没有另一列来汇总 IP 地址吗?您不应该在没有任何其他组列的情况下每条记录只有一个整数,对吗?你用什么数据库?
我认为当解析的 IP 以四行形式出现时,您正在做一些奇怪的事情。直接解析为一行应该很容易。您能否提供您的解析方法和/或输入格式?
我同意sheepsimulator 的回答,但是正如您对我的回答David 所评论的那样,如果您的表中没有分组列和多个条目,则很难找到匹配的条件。如果您只有一个 IP 条目(所以 4 行),那么您可以:
编辑:第一个解决方案(使用 lineID)可用于解析多个 IP 条目,但它需要在数据库中顺序插入。