SQL:如何区分某个字段中具有相同值的不同行,并对另一个字段应用单独的函数
我有一个显示订单列表的查询输出。如果某些订单由子订单组成,则这些订单可能在查询输出中占据多条记录。每个子订单在输出中占据单独的一行。OrderID列对于输出中的所有子订单具有相同的值:SQL:如何区分某个字段中具有相同值的不同行,并对另一个字段应用单独的函数,sql,sql-server,Sql,Sql Server,我有一个显示订单列表的查询输出。如果某些订单由子订单组成,则这些订单可能在查询输出中占据多条记录。每个子订单在输出中占据单独的一行。OrderID列对于输出中的所有子订单具有相同的值: OrderID Sub-Order Price 1 1 100 1 2 50 2 1 30 3 1 50 我需要在输出中添加一列“折扣”,并按照
OrderID Sub-Order Price
1 1 100
1 2 50
2 1 30
3 1 50
我需要在输出中添加一列“折扣”,并按照以下规则填充:
我将mssql与ms sql studio一起使用使用
CASE
和COUNT
窗口函数
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> )
选择订单ID、子订单、价格、,
(按医嘱ID划分)上的(计数(*)大于1时的情况
然后价格*0.8
其他价格*0.9
结束
从(桌子或桌子)
@一匹没有名字的马谢谢你的编辑。请问您使用了什么标记?当您在编辑问题时单击右上角的帮助图标(问号)时,您将被带到这里:这解释了所有听起来很有希望的内容,请尝试。如果我的查询是两个查询的并集,这可以应用吗?@LouisShraga您的意思可能是,如果table
是两个查询的并集,您是否可以使用这种方法。当然可以,您只需将表
替换为()表
。