gpt4 book ai didi

SQL获取最新记录

转载 作者:行者123 更新时间:2023-12-01 01:52:30 26 4
gpt4 key购买 nike

我正在努力从这张表中提取两个结果。我有一个在不同日期添加的不同类型、项目和值的表格。

Type Item Value Date
1 10 111 20160101
1 10 122 20170101
1 11 222 20170101
1 12 312 20170101
2 10 144 20160101
2 10 155 20170101
2 11 105 20160101
2 11 133 20170101
2 11 123 20180101
3 10 111 20170101

首先,我只想要最新的日期,显示在类型、项目的组合上。我试过这个查询,但它会显示我所有的日期。
SELECT Type, Item, Value, MAX(Date) as Date from TABLENAME
WHERE Type='1' or Type='2'
GROUP BY Type, Item, Value

下面是我想要的样子。
Type Item Value Date
1 10 122 20170101
1 11 222 20170101
1 12 312 20170101
2 10 155 20170101
2 11 123 20180101

然后我们有一个更棘手的问题,在这里我完全迷失了,不确定是否有可能,或者我应该以其他方式做到这一点?我想看看类型 1 的项目是否有值,而类型 2 没有。或者反过来。显示在新表中。
Item Type1 Type2 Date
10 1 2 20170101 -> Item 10 has values with both type 1,2 on specific date
11 1 20170101 -> Item 11 has only a value when type 1 on specific date
11 2 20180101 -> Item 11 has only a value when type 2 on specific date
12 1 20170101 -> Item 12 has only a value when type 1 on specific date

最佳答案

对于您的第一个问题,我认为您可以使用:

SELECT A.TYPE, A.ITEM, A.VALUE, A.DATE 
FROM TABLENAME A
INNER JOIN ON (SELECT TYPE, ITEM, MAX(DATE) AS MAXDATE
FROM TABLENAME
GROUP BY TYPE, ITEM) B ON A.TYPE = B.TYPE AND A.ITEM = B.ITEM AND A.DATE=B.MAXDATE
WHERE A.TYPE='1' OR A.TYPE='2'

其次,你可以试试这个:
SELECT DISTINCT A.ITEM, B.TYPE AS TYPE1, C.TYPE AS TYPE2, CASE WHEN B.TYPE IS NOT NULL THEN B.DAT ELSE C.DAT END AS DATE_X 
FROM
(SELECT ITEM, TYPE, MAX(DATE) AS DAT
FROM ITEM
GROUP BY ITEM, TYPE) A
LEFT JOIN (SELECT ITEM, TYPE, MAX(DATE) AS DAT FROM ITEM WHERE TYPE='1' GROUP BY ITEM, TYPE) B ON A.ITEM = B.ITEM AND A.DAT= B.DAT
LEFT JOIN (SELECT ITEM, TYPE, MAX(DATE) AS DAT FROM ITEM WHERE TYPE='2' GROUP BY ITEM, TYPE) C ON A.ITEM = C.ITEM AND A.DAT= C.DAT

输出 :
    ITEM    TYPE1   TYPE2   DATE_X
1 10 1 2 20170101
2 11 NULL 2 20180101
3 11 1 NULL 20170101
4 12 1 NULL 20170101

关于SQL获取最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43251586/

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