Sql Loye1id) 2.按托运人名称分组,最后1海里 |托运人名称|最近1海里|无订单|

Sql Loye1id) 2.按托运人名称分组,最后1海里 |托运人名称|最近1海里|无订单|,sql,oracle,Sql,Oracle,有关更多说明,请参阅我的链接 您正在寻找一种美化数据表示的方法。这不是SQL的目的。我这样做是为了向管理层提交报告。是的,这是可能的。请查看,其中说明了如何执行此操作。警告:很复杂。@Luke101不要直接从SQL输出。在Excel或类似的工具中进行,可以很容易地使用SQL作为数据源。然后在Excel中给他们提供报告或添加其他层来美化数据。这不是RDBMS的用途。谢谢。我不得不稍微调整一下查询,但它现在可以工作了。我很感激你给我指引了正确的方向。我完全忘记了窗口功能的美丽。为什么不从选择列表中删

有关更多说明,请参阅我的链接

您正在寻找一种美化数据表示的方法。这不是SQL的目的。我这样做是为了向管理层提交报告。是的,这是可能的。请查看,其中说明了如何执行此操作。警告:很复杂。@Luke101不要直接从SQL输出。在Excel或类似的工具中进行,可以很容易地使用SQL作为数据源。然后在Excel中给他们提供报告或添加其他层来美化数据。这不是RDBMS的用途。谢谢。我不得不稍微调整一下查询,但它现在可以工作了。我很感激你给我指引了正确的方向。我完全忘记了窗口功能的美丽。为什么不从选择列表中删除外部
SELECT
、内部
DISTINCT
、原始
YT.NAME
?我希望得到同样的结果。
Name          Location
----------------------
user1         1
user1         9
user1         3
user2         1
user2         10
user3         97
Name          Location
----------------------
user1         1
              9
              3
user2         1
              10
user3         97
SQL> break on name
SQL> WITH q AS (
SELECT 'user1' NAME, 1 LOCATION FROM dual
UNION ALL
SELECT 'user1', 9 FROM dual
UNION ALL
SELECT 'user1', 3 FROM dual
UNION ALL
SELECT 'user2', 1 FROM dual
UNION ALL
SELECT 'user2', 10 FROM dual
UNION ALL
SELECT 'user3', 97 FROM dual
)
SELECT NAME,LOCATION
  FROM q
 ORDER BY name;

NAME    LOCATION
----- ----------
user1          1
               9
               3
user2          1
              10
user3         97

6 rows selected.

SQL>
SELECT
    CASE main.name WHERE preceding_id IS NULL THEN main.name ELSE null END,
    main.location
FROM mytable main LEFT JOIN mytable preceding
    ON main.name = preceding.name AND MIN(preceding.id) < main.id
GROUP BY main.id, main.name, main.location, preceding.name
ORDER BY main.id

SELECT A.FINAL_NAME, A.LOCATION
  FROM (SELECT DISTINCT DECODE((LAG(YT.NAME, 1) OVER(ORDER BY YT.NAME)),
                               YT.NAME,
                               NULL,
                               YT.NAME) AS FINAL_NAME,
                        YT.NAME,
                        YT.LOCATION
          FROM YOUR_TABLE_7 YT) A

1           1
2   user2   1
3   user3   97
4   user1   1
5           3
6           9
7          10

SELECT DECODE((LAG(YT.NAME, 1) OVER(ORDER BY YT.NAME)),
              YT.NAME,
              NULL,
              YT.NAME) AS FINAL_NAME,
       YT.LOCATION
  FROM SO_BUFFER_TABLE_7 YT
SELECT a, COUNT(b) FROM test_table GROUP BY a ORDER BY NULL;