when entrust_code=’1322′ then ‘陕西公司’ end 厂家,ROW_NUMBER()over(PARTITION by dealers_code,entrust_code order by add_time desc) rid
CASE
表达式:
when entrust_code='1322' then '陕西有限公司' end 厂家
:这是一个CASE
表达式,它基于条件判断生成一个新的列厂家
。- 当
entrust_code
的值等于 ‘1322’ 时,即如果某一行的entrust_code
的值等于 ‘1322’,那么CASE
表达式返回 ‘陕西郝其军制药股份有限公司’。 - 这个表达式通常用于根据不同的条件将不同的值分配给新的列。在这里,根据
entrust_code
的值来确定厂家名称。
ROW_NUMBER()
窗口函数:
ROW_NUMBER() OVER (PARTITION BY dealers_code, entrust_code ORDER BY add_time DESC) rid
:这是一个窗口函数,用于为查询结果中的每一行分配一个唯一的行号(行标识符),并将结果存储在名为rid
的新列中。PARTITION BY dealers_code, entrust_code
部分指定了窗口函数的分区条件,它将结果集分成多个窗口,每个窗口具有相同的dealers_code
和entrust_code
值。这意味着行号是在每个不同的dealers_code
和entrust_code
组合内独立计算的。ORDER BY add_time DESC
部分指定了如何对行进行排序,以便确定行号。在这里,行号按add_time
列的降序排列,意味着最新的行将获得最小的行号。
ROW_NUMBER()
:这是窗口函数的主要部分,它指定了要为查询结果分配行号。OVER
:OVER
子句用于定义窗口函数的窗口(window)。窗口是用来确定行号分配的范围。在你的例子中,你使用OVER
子句来指定窗口函数的窗口。PARTITION BY dealers_code, entrust_code
:这部分定义了窗口函数的分区条件。它告诉窗口函数要根据哪些列的值来划分窗口。在你的例子中,窗口将根据dealers_code
和entrust_code
列的值进行分区,这意味着窗口函数将为每个不同的dealers_code
和entrust_code
组合分配行号。ORDER BY add_time DESC
:这部分定义了行号的排序方式。它告诉窗口函数在为行分配行号时,按照哪个列的值来排序。在你的例子中,行号将按照add_time
列的降序排列,这意味着最新的行将获得最小的行号。
最终,ROW_NUMBER() OVER (PARTITION BY dealers_code, entrust_code ORDER BY add_time DESC)
的含义是为查询结果中的每个不同的 dealers_code
和 entrust_code
组合分配行号,行号的分配方式是根据 add_time
列的降序排列来进行的。这个行号被存储在名为 rid
的新列中,以便你可以在查询中使用它。这通常用于标识和排序数据,以便更好地进行分析和查询。
SELECT requester_id, accepter_id,
CASE
WHEN requester_id = ‘1’ THEN ‘浙江公司’
WHEN requester_id = ‘2’ THEN ‘江苏公司’
END AS 厂家,
ROW_NUMBER() OVER (PARTITION BY requester_id, accepter_id ORDER BY accept_date DESC) AS rid,
accept_date
FROM requestaccepted;