例如我有一张表
IPPARSED
127个
0
0
1个
现在我需要转动表格,以便它可以像这样
1 2 3 4
127 0 0 1
你能帮帮我吗?
答案 0 :(得分:2)
您可以尝试使用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 Cookbook pg 365。
<condition to match (...) octet>
时遇到问题,则需要对查询结果进行选择操作,以便以某种方式向您的表添加编号。在Oracle中,您将使用rownum伪目标,但SQL Server中不存在。看来,在SQL Server 2005中,您可以使用ROW_NUMBER()
内置函数作为列,或者可以使用IDENTITY(...)
函数作为该查询中的列。
答案 1 :(得分:1)
嗨,您的表中是否有另一列聚合IP地址? Yous不应该每个记录只有一个整数而没有任何其他组列,对吗? 你用什么数据库?
答案 2 :(得分:1)
我认为当解析的IP作为四行出现时,你正在做一些奇怪的事情。直接解析成一行应该很容易。您可以提供解析方法和/或输入格式吗?
答案 3 :(得分:1)
我同意绵羊模拟器的答案,但是当你评论我的答案大卫时,如果你的表中没有分组列和几个条目,那么很难找到匹配的条件。 如果您只有一个IP条目(如此4行),那么您可以:
编辑:第一个解决方案(使用lineID)可用于解析多个IP条目,但它需要在数据库中进行顺序插入。