Filling in blanks, based on next value

I have a dataset in which a User ID will be identified during a session.... and then later change User IDs... and in between, there are rows of data in which the User ID is not identified - but I want to fill in those gaps with the next User ID that is identified during that session...
Row -- Session ID -- User ID -- Timestamp
001 -- 123 -- Null -- 10000...
002 -- 123 -- Null -- 10002...
003 -- 123 -- ABC -- 10004...
004 -- 987 -- Null -- 10006...
005 -- 123 -- Null -- 10005...
006 -- 123 -- DEF -- 10007....
007 -- 987 -- XYZ -- 10009...
I would want User ID value in rows 001 and 002 populated with 'ABC'
I would want User ID value in row 005 populated with 'DEF'
I would want User ID value in row 004 populated with 'XYZ'
Can anyone advise on how I can do this?
Answers
-
SELECT *, CASE WHEN `userID` IS NULL THEN (SELECT DISTINCT `userID` FROM `your_table` WHERE (`sessionID`=T.`sessionID`) AND (`userID` IS NOT NULL)) ELSE `userID` END AS "new_UserID" FROM `your_table` T
If I understood correctly, this should work.
Hope it helps!
0
Categories
- All Categories
- 1.1K Product Ideas
- 1.1K Ideas Exchange
- 1.2K Connect
- 969 Connectors
- 256 Workbench
- Cloud Amplifier
- 1 Federated
- 2.4K Transform
- 76 SQL DataFlows
- 500 Datasets
- 1.8K Magic ETL
- 2.7K Visualize
- 2.2K Charting
- 373 Beast Mode
- 20 Variables
- 484 Automate
- 102 Apps
- 378 APIs & Domo Developer
- 6 Workflows
- 22 Predict
- 6 Jupyter Workspaces
- 16 R & Python Tiles
- 316 Distribute
- 64 Domo Everywhere
- 252 Scheduled Reports
- 59 Manage
- 59 Governance & Security
- 1 Product Release Questions
- 5K Community Forums
- 37 Getting Started
- 23 Community Member Introductions
- 63 Community Announcements
- 4.8K Archive