[英]Move each column value from the same group to new column SQL Big Query
[英]Big query/sql to maintain the same data from next row onwards in the same column itself, got based on some condition in the current row
我正在處理一個用例,我需要在其中實現一種邏輯來獲取相關數據。
例如:如果您將看到圖像:
該列 = new_TARIFF_ALLOWANCE_DATA 計算為
case when gift_given!=0 or gift_received!=0 then TARIFF_ALLOWANCE_DATA - gift_given + gift_received else remain same whatever it is as per last row calculation from next row onwards '作為new_total_allwance
所以基本上我想要在同一列中基於條件無論我得到什么都會在同一列中從下一行開始保持相同的值
我嘗試了 if (current_row = previous_row then previous_row, current_row) 方法但沒有用。
一種使用導航函數從gift_given
和gift_taken
獲取最后填充值的方法:
WITH calc_last_gifts AS (
SELECT
*,
LAST_VALUE(NULLIF(gift_given, 0) IGNORE NULLS) OVER (ORDER BY row_no ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as last_gift_given,
LAST_VALUE(NULLIF(gift_taken, 0) IGNORE NULLS) OVER (ORDER BY row_no ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as last_gift_taken,
FROM sample
)
SELECT
* EXCEPT(last_gift_given, last_gift_taken),
tarif_allowance_data - IFNULL(last_gift_given, 0) + IFNULL(last_gift_taken, 0) as new_tarif_allowance_data
FROM calc_last_gifts
有關LAST_VALUE
導航 function 的更多信息: https://cloud.google.com/bigquery/docs/reference/standard-sql/navigation_functions#last_value
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.