【问题标题】:Max and substring function SQL Server最大值和子字符串函数 SQL Server
【发布时间】:2017-04-27 17:56:08
【问题描述】:

我需要一些帮助来返回每个 OrderID 的最大值。

示例我有一个具有 OrderID 的表,其中包括:A04-01、B17-10、C12-01 等。信。示例:A04-01 是最低的,A17-01 是最高的字母 A。所有这些都是在 Oracle 过程中构建的,但是我们摆脱了 Oracle,所以我需要在 Microsoft SQL Server 中重新创建它。谢谢。

【问题讨论】:

  • A17-01 必须考虑 1701 还是 17?

标签: sql sql-server tsql substring max


【解决方案1】:
Declare @YourTable table  (OrderID varchar(25))
Insert into @YourTable values
 ('A04-01')
,('A17-10')
,('B17-10')
,('C12-01')

Select Letter = left(OrderID,1)
      ,MinVal = min(OrderID)
      ,MaxVal = max(OrderID)
 From  @YourTableYourTable    
 Group By left(OrderID,1)

返回

Letter  MinVal  MaxVal
A       A04-01  A17-10
B       B17-10  B17-10
C       C12-01  C12-01

【讨论】:

  • 我跑了,太好了,如何替换` ('A04-01') ,('A17-10') ,('B17-10') ,('C12-01') ` 对于我的表 insorders 中的 ordered 列中的值?
  • @JoelJacobson 表变量是说明性的。删除 SELECT 上面的所有内容并将 (at)YourTable 替换为您的实际表名
  • @JoelJacobson 很高兴它有帮助
【解决方案2】:

如果OrderID 正是你提到的,试试这个:

WITH ABC
AS
(
Select OrderID, ROW_NUMBER()OVER(Partition by OrderID Order by OrderID desc) as Row_Indicator
From table
)
Select * From ABC
Where ABC.Row_Indicator = 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多