gpt4 book ai didi

sql - 棘手的 SQL SELECT 语句 - 将两行合并为两列

转载 作者:行者123 更新时间:2023-12-04 22:33:15 25 4
gpt4 key购买 nike

我的问题:
我有一张 table Channel <int>和一个 Value <float>列,以及时间戳和其他几个带有附加数据的列。 Channel12 ,并且有 1 行或 2 行除了 channel 和值之外的所有内容都相同。

我想要做的是将此数据选择为一个新表单,其中两个 channel 显示为列。我试着用 GROUP BY 做点什么,但我不知道如何根据同一行上的 channel 将值放入正确的列中。

示例:
对于那些宁愿查看我拥有的数据和我想要的数据并从中找出答案的人,这里是。我有什么:

 Channel    Value       Timestamp                OtherStuff
1 0.2394 2010-07-09 13:00:00 'some other stuff'
2 1.2348 2010-07-09 13:00:00 'some other stuff'
1 24.2348 2010-07-09 12:58:00 'some other stuff'
2 16.3728 2010-07-09 12:58:00 'some other stuff'
1 12.284 2010-07-09 13:00:00 'unrelated things'
2 9.6147 2010-07-09 13:00:00 'unrelated things'

我想要的:

Value1     Value2      Timestamp                OtherStuff
0.2394 1.2348 2010-07-09 13:00:00 'some other stuff'
24.2348 16.3728 2010-07-09 12:58:00 'some other stuff'
12.284 9.6147 2010-07-09 13:00:00 'unrelated things'

更新以回应评论中出现的一些问题,以及一些后续问题/澄清:

  • 是的,就是Timestamp的组合和 OtherStuff将两行链接在一起。 (OtherStuff 实际上不止一列,但为简洁起见我进行了简化。)还有一些其他列不一定相等,但应保持原样。

  • 有问题的表已经由两个表连接而成,其中 Value , ChannelTimestamp来自其中一个,其余的(总共 7 列,其中 4 列对于“链接”行总是相等的,而其他三列大多不是)。使用 INNER JOIN 有一些建议- 如果我已经将东西连接在一起(即使我没有 myTable 连接到自身),这些仍然有效吗?

  • 很多行具有相同的时间戳,所以我需要来 self 要连接的两个表的信息来确定将哪些行链接在一起。

  • 我有很多数据。输入来自全国各地的测量设备,其中大多数(如果不是全部)每 2 分钟上传一次测量值(最多 4 个 channel )。现在我们有大约 1000 台设备在线,所以这意味着平均每分钟增加大约 1000 行。我需要考虑至少 3 小时(最好是 6 小时)的值,这意味着表中有 180 000 到 360 000 行,包含 channel 、值和时间戳。

最佳答案

只要你有链接两行的东西,像这样

SELECT
c1.Value AS Value1, c2.Value AS Value2, c1.timestamp, c2.otherstuff
FROM
MyTable c1
JOIN
MyTable c2 ON c1.timestamp = c2.timestamp AND c1.otherstuff = c2.otherstuff
WHERE
c1.Channel = 1 AND c2.Channel = 2

如果您没有任何链接这两行的东西,那么它可能无法完成,因为您怎么知道它们是配对的?

如果您有 1 2 行(编辑:并且不知道您拥有哪个 channel 值)

SELECT
c1.Value AS Value1, c2.Value AS Value2, c1.timestamp, c2.otherstuff
FROM
(
SELECT Value, timestamp, otherstuff
FROM MyTable
WHERE Channel = 1
) c1
FULL OUTER JOIN
(
SELECT Value, timestamp, otherstuff
FROM MyTable
WHERE Channel = 2
) c2 ON c1.timestamp = c2.timestamp AND c1.otherstuff = c2.otherstuff

关于sql - 棘手的 SQL SELECT 语句 - 将两行合并为两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3212574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com