如果我有代码
SELECT DISTINCT
table1.column2, table2.column3, table2.column4
FROM
table1
JOIN
table2 ON table1.column = table2.column
WHERE
table1.column1 IN ('Value1', 'Value2')
这将返回两行相同的数据,除了每一行都有一个特定列不同的值。如何将一个值叠加在一列上,并将其生成一列?
例如,它目前会产生如下结果:column1 column2 column3
Value1 Value2 Value3
Value1 Value2 Value5
基本上它会创建两行,因为在第3列中,值是不同的,是否有任何方法可以将该值设为5并为其创建一个单独的列到第一行?
这会涉及到旋转吗?或者我怎么能这样做呢?
感谢您的帮助!
答案 0 :(得分:1)
您可以根据需要聚合列。它可以是 - MAX
,MIN
,SUM
,AVG
等。
SELECT table1.column1, table1.column2, MAX(table2.column3) AS column3
FROM table1
INNER JOIN table2
ON table1.column = table2.column
WHERE table1.column1 IN ('Value1', 'Value2')
GROUP BY table1.column1, table1.column2
答案 1 :(得分:1)
LAG()
可以在当前行之前获取该行。所以脚本是这样的:
select * from(
SELECT DISTINCT table1.column2, table2.column3, table2.column4,lag(column4) over (order by table1.column2,table2.column3,table2.column4) l
FROM table1
JOIN
table2 on
table1.column = table2.column
WHERE table1.column1 IN ('Value1', 'Value2')
)t where t.l is not null
答案 2 :(得分:1)
因为column3只有2个值,MIN()和MAX()会给你两个值
SELECT table1.column1, table2.column2, MIN(table2.column3) , MAX(table2.column3)
FROM table1
JOIN table2
ON table1.column = table2.column
WHERE table1.column1 IN ('Value1', 'Value2')
GROUP BY table1.column2, table2.column3