【发布时间】:2014-03-28 17:25:16
【问题描述】:
我尝试通过对其他列进行分组来生成一个新列,并且下面的代码有效。
CASE
WHEN familyGroupPOSRef = 955
THEN MAX(RVCPOSId) OVER (PARTITION BY organizationID, Location_Code, transactionID)
ELSE -1
END AS toEntity
有没有办法通过使用字符串列来运行此代码?在OVER 语句之前使用LocationName 而不是RVCPOSId。
CASE
WHEN familyGroupPOSRef = 955
THEN LocationName OVER (PARTITION BY organizationID, Location_Code, transactionID)
ELSE 'nothing'
END AS toEntity
到目前为止,我在网上找不到任何东西。它不必是这种方法。我需要将 organizationID, Location_Code, transactionID 分组并在单独的列中显示 955 的 locationName。
现在的情况:
organizationID Code transactionID FGName itemName
10000 955 123456 Location Liv Retail
10000 103 123456 Internal Item Chocolate Milkshake
10000 103 123456 Internal Item Strawberry Milk
10000 103 123456 Internal Item Milk
我想要的样子
organizationID Code transactionID FGName toEntity itemName
10000 955 123456 Location Liv Retail Liv Retail
10000 103 123456 Internal Item Liv Retail Chocolate Milkshake
10000 103 123456 Internal Item Liv Retail Strawberry Milk
10000 103 123456 Internal Item Liv Retail Milk
一个事务可以有多个 menuItems,而且它总是有 1 个位置记录,就像一个 menuItem 一样保存。这是一个技巧。我喜欢创建一个新列来应用位置名称,即在提供的示例数据中的 toEntity 下的 Liv Retail。
如果我在追求不可能的事情,请告诉我。然后我会分解stmt并用join连接表。
提前致谢。
【问题讨论】:
标签: sql-server string tsql partition