gpt4 book ai didi

sql-server-2008 - t-sql 查询中的 MAX 函数

转载 作者:行者123 更新时间:2023-12-04 06:58:23 26 4
gpt4 key购买 nike

我正在尝试获取几个表中的最大列值。例如在下面的片段中(它不起作用)我正在尝试从所有 3 个表 A、B 和 C 中的列名“tickvalue”获取 MAX 值。不确定如何获取该值。

tickvalue列的数据类型为timestamp。

select 
c.somkey
,MAX(a.tickvalue, b.tickvalue, c.tickvalue) as tickvalue
from A as a
join B as b
on a.key = b.key
join C as c
on b.somekey = c.somkey
where a.key = '<some key>'

谢谢

最佳答案

这不是 MAX() 聚合函数在 TSQL 中的工作方式(参见此处:TSQL MAX())MAX 函数仅获取单个列中的最大值。

要在此处实现您想要的,您必须将三个值放入一个列中。这可以使用 UNPIVOT PIVOT/UNPIVOT 来完成

这段代码可能会对您有所帮助。

CREATE TABLE #A (ID INT, tickvalue INT)
CREATE TABLE #B (ID INT, tickvalue INT)
CREATE TABLE #C (ID INT, tickvalue INT)

INSERT INTO #A VALUES (1,1)
INSERT INTO #A VALUES (2,4)
INSERT INTO #A VALUES (3,7)
INSERT INTO #A VALUES (4,2)
INSERT INTO #A VALUES (5,8)

INSERT INTO #B VALUES (1,8)
INSERT INTO #B VALUES (2,7)
INSERT INTO #B VALUES (3,2)
INSERT INTO #B VALUES (4,4)
INSERT INTO #B VALUES (5,1)

INSERT INTO #C VALUES (1,2)
INSERT INTO #C VALUES (2,1)
INSERT INTO #C VALUES (3,2)
INSERT INTO #C VALUES (4,15)
INSERT INTO #C VALUES (5,2)


SELECT ID, MAX(tickvalue)
FROM
(SELECT C.ID, A.tickvalue t1, B.tickvalue t2, C.tickvalue t3
FROM #A AS a
JOIN #B AS b ON a.ID = b.ID
JOIN #C AS c ON b.ID = c.ID) p
UNPIVOT (tickvalue FOR tsource IN (t1,t2,t3)) AS unpvt
GROUP BY ID

DROP TABLE #A
DROP TABLE #B
DROP TABLE #C

关于sql-server-2008 - t-sql 查询中的 MAX 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13595648/

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