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
- 10.5K All Categories
- 3 Connect
- 913 Connectors
- 250 Workbench
- 458 Transform
- 1.7K Magic ETL
- 69 SQL DataFlows
- 476 Datasets
- 183 Visualize
- 249 Beast Mode
- 2.1K Charting
- 11 Variables
- 16 Automate
- 354 APIs & Domo Developer
- 88 Apps
- 3 Workflows
- 20 Predict
- 5 Jupyter Workspaces
- 15 R & Python Tiles
- 245 Distribute
- 62 Domo Everywhere
- 242 Scheduled Reports
- 20 Manage
- 41 Governance & Security
- 168 Product Ideas
- 1.2K Ideas Exchange
- 9 Community Forums
- 27 Getting Started
- 14 Community Member Introductions
- 55 Community News
- 4.5K Archive