SQL:如何区分某些字段中具有相同值的不同行,并将单独的函数应用于另一个字段

时间:2017-09-15 08:31:09

标签: sql sql-server

我有一个显示订单列表的查询输出。如果这些订单包含子订单,则某些订单可能在查询输出中占用多于一条记录。每个订单在输出中占用一个单独的行。 OrderID列对输出中的所有子订单具有相同的值:

OrderID    Sub-Order  Price
1             1         100
1             2         50
2             1         30
3             1         50

我需要添加一个列"折扣"到输出并按照以下规则填写:

  1. 如果某个订单有一个子订单 - 折扣是价格的10%
  2. 如果某个订单有多个子订单,则所有子订单的折扣为20%'
  3. 我的查询是两个SELECT的UNION。

    我在ms sql studio中使用mssql

1 个答案:

答案 0 :(得分:0)

使用CASECOUNT窗口功能

SELECT OrderID, Sub-Order, Price,
     CASE WHEN (count(*) OVER (PARTITION BY OrderID)) > 1 
          THEN Price * 0.8
          ELSE Price * 0.9
     END
FROM ( table or <query> )