[英]Update values from one column in same table to another in SQL Server
[英]Update a column using another column in the same table with two entries (Values) in SQL Server
如果您只有 2 個產品,則可以使用:
WITH cte AS (
SELECT Top_Level, COUNT(DISTINCT Product) AS cnt
FROM tab
GROUP BY Top_Level
)
UPDATE t
SET Product_group = CASE WHEN cnt = 1 THEN t.Product ELSE 'Others/Simple' END;
FROM tab t
JOIN cte ctab
ON c.Top_Level = t.Top_Level;
您只有兩組,因此您可以使用窗口函數min()
和max()
:
select i.*,
(case when min(product) over (partition by top_level) =
max(product) over (partition by top_level)
then product
else 'Other/Simple'
end) as product_group
from invoices i;
如果product
可能是NULL
您可能希望使用min(product) over (partition by top_level)
。
這種方法不能(容易)推廣到兩個以上的群體。 但是在這種情況下它應該可以很好地工作。
編輯:
如果您確實想更新該列,只需使用 CTE:
with toupdate as (
select i.*,
(case when min(product) over (partition by top_level) =
max(product) over (partition by top_level)
then product
else 'Other/Simple'
end) as new_product_group
from invoices i
)
update toupdate
set product_group = new_product_group;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.