由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Database版 - PIVOT question
相关主题
求教个MS SQL的问题也来问个SQL的问题
T-SQL Row Concatenate with a Twist??MSSQL Power Function
better solution for cross table query in sql?问一道SQL的题 (转载)
error of executing SQL query of string concatenation (转载请问sql语句能不能实现这样的功能
请教SQL问题,谢谢这个sql怎么写? transpose Columns and rows in sql
问个SQL问题Re: How to concatenate NULL value with a string in SQL Server?
问一个SQL Server的问题Oracle急问
PIVOT TABLE请教有做 PostgreSQl extension project的大牛:
相关话题的讨论汇总
话题: pivot话题: select话题: rn话题: s31话题: s33
进入Database版参与讨论
1 (共1页)
j*****n
发帖数: 1781
1
Here is a question been asked...
先讨论一下第一题。我知道pivot的用法。但是这个考的好像和传统的不一样。我知道
的pivot一般都要和aggregate
function在一起用的。当然也可以不用aggregate function,但这样会有大量的null出
现。
我理解的题目意思是这样
1)把
colName1 colName2 colName3
s11 s12 s13
s21 s22 s23
s31 s32 s33
s41 s42 s43
变成
s11 s21 s31 s41
s12 s22 s32 s42
s13 s23 s33 s43
2) 然后用一个concatenate function 就整合成一个column了
第一步用一个procedure应该很好实现。但是用一句 SQL 做到实现整个table的转置,
我没找到答案。看你能不能提供点思路。
首先的一个困难,用case应该不行,应为根本没有unique之类的限制,case会把一列里
边等值的一起处理。
j*****n
发帖数: 1781
2
I had a solution but sounds stupid, post here see if anyone has better idea.
with Data (c1, c2, c3)
AS (
SELECT 's11', 's12', 's13'
union all
select 's21', 's22', 's23'
union all
select 's31', 's32', 's33'
union all
select 's41', 's42', 's43'
)
SELECT [1] r1, [2] r2, [3] r3, [4] r4
FROM
(SELECT c1, row_number() over (order by c1) as RN
FROM data) AS SourceTable
PIVOT
(
min(c1)
FOR rn IN ([1], [2], [3], [4])
) AS PivotTable
union all
SELECT [1] r1, [2] r2, [3] r3, [4] r4
FROM
(SELECT c2, row_number() over (order by c2) as RN
FROM data) AS SourceTable
PIVOT
(
min(c2)
FOR rn IN ([1], [2], [3], [4])
) AS PivotTable
union all
SELECT [1] r1, [2] r2, [3] r3, [4] r4
FROM
(SELECT c3, row_number() over (order by c3) as RN
FROM data) AS SourceTable
PIVOT
(
min(c3)
FOR rn IN ([1], [2], [3], [4])
) AS PivotTable
B*****g
发帖数: 34098
3
re

idea.

【在 j*****n 的大作中提到】
: I had a solution but sounds stupid, post here see if anyone has better idea.
: with Data (c1, c2, c3)
: AS (
: SELECT 's11', 's12', 's13'
: union all
: select 's21', 's22', 's23'
: union all
: select 's31', 's32', 's33'
: union all
: select 's41', 's42', 's43'

1 (共1页)
进入Database版参与讨论
相关主题
请教有做 PostgreSQl extension project的大牛:请教SQL问题,谢谢
请问怎么用sql实现hash问个SQL问题
Remove duplicate from oracle table问一个SQL Server的问题
再问个 subquery的问题PIVOT TABLE
求教个MS SQL的问题也来问个SQL的问题
T-SQL Row Concatenate with a Twist??MSSQL Power Function
better solution for cross table query in sql?问一道SQL的题 (转载)
error of executing SQL query of string concatenation (转载请问sql语句能不能实现这样的功能
相关话题的讨论汇总
话题: pivot话题: select话题: rn话题: s31话题: s33