我尝试通过对其他列进行分组来生成新列,并且下面的代码可以正常工作。
CASE
WHEN familyGroupPOSRef = 955
THEN MAX(RVCPOSId) OVER (PARTITION BY organizationID, Location_Code, transactionID)
ELSE -1
END AS toEntity
有没有办法通过使用字符串列来运行此代码?在LocationName
陈述之前使用RVCPOSId
代替OVER
。
CASE
WHEN familyGroupPOSRef = 955
THEN LocationName OVER (PARTITION BY organizationID, Location_Code, transactionID)
ELSE 'nothing'
END AS toEntity
到目前为止我在网上找不到任何东西。它不一定是这种方法。我需要将organizationID, Location_Code, transactionID
分组并在单独的列中显示locationName
955。
现在如何:
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连接表。
提前致谢。
答案 0 :(得分:0)
您可以使用简单的子查询
来完成此操作CREATE TABLE Table1
([organizationID] int,
[Code] int,
[transactionID] int,
[FGName] varchar(13),
[itemName] varchar(19));
INSERT INTO Table1
([organizationID],
[Code],
[transactionID],
[FGName],
[itemName])
VALUES
(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');
select *,toEntity=(SELECT ITEMNAME FRom TAble1 Ti
where ti.TRANSACTIONID=T.TRANSACTIONID and Ti.FGNAME='Location' )
from Table1 T