SQL:查询基于组的参数设定值 [英] SQL: Query to set value based on group parameter
本文介绍了SQL:查询基于组的参数设定值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要帮助写一个查询做在我的数据库表如下:
选择,其中在列1的值是相同的所有行
如果是'主'尚未设置在列2为其中的任何
设置列2 ='主'组中第一行
否则继续到下一个组
要点:我只可以为每个组中的一个'主'标签
样品输入:
列1 |列2 |
ID1
ID1
ID1
ID2小学
ID2
ID3
ID3
样品结果:
列1 |列2 |
ID1小学
ID1
ID1
ID2小学
ID2
ID3小学
ID3
感谢您!
解决方案
使用 ROW_NUMER
窗口功能找到每组的第一个记录,然后更新只记录其不列入有无在
列2
由于没有可找我用每组的第一个记录列(选择空)
在序
的示例数据
CREATE TABLE #ee(列1 VARCHAR(50),列2 VARCHAR(50))
INSERT #ee
VALUES('ID1',NULL)
(ID1,NULL)
(ID1,NULL)
(ID2,主),
(ID2,NULL)
(ID3,NULL)
(ID3,NULL)
更新查询:
; WITH CTE
AS(SELECT *,
ROW_NUMBER()OVER(PARTITION BY列1 ORDER BY(SELECT NULL))RN
从#ee一个
WHERE NOT EXISTS(SELECT 1
从#ee b
WHERE a.Column1 = b.Column1
与b.Column2 ='初级'))
UPDATE CTE
SET列2 ='主'
WHERE RN = 1
结果:
列1列2
------- -------
ID1主
ID1空
ID1空
ID2小学
ID2空
ID3主
ID3空
I need help writing a query to do the following on a table in my DB:
Select all rows where the values in Column1 are the same
If a 'Primary' has not been set in Column2 for any of them
Set Column2 = 'Primary' for first row in the group
Else go on to the next group
Key points: I can only have one 'Primary' tag per group
Sample input:
Column1 | Column2 |
ID1
ID1
ID1
ID2 Primary
ID2
ID3
ID3
Sample Result:
Column1 | Column2 |
ID1 Primary
ID1
ID1
ID2 Primary
ID2
ID3 Primary
ID3
Thank you!
解决方案
Use ROW_NUMER
window function to find the first record per group then update only the records which doesnot have primary
value in column2
Since there is no column available to find the first record per group i have used (select null)
in order by
Sample data
CREATE TABLE #ee(Column1 VARCHAR(50),Column2 VARCHAR(50))
INSERT #ee
VALUES ('ID1',NULL),
('ID1',NULL),
('ID1',NULL),
('ID2','Primary'),
('ID2',NULL),
('ID3',NULL),
('ID3',NULL)
Update query:
;WITH cte
AS (SELECT *,
Row_number()OVER(partition BY column1 ORDER BY (SELECT NULL)) RN
FROM #ee a
WHERE NOT EXISTS (SELECT 1
FROM #ee b
WHERE a.Column1 = b.Column1
AND b.Column2 = 'primary'))
UPDATE cte
SET Column2 = 'primary'
WHERE rn = 1
Result:
Column1 Column2
------- -------
ID1 primary
ID1 NULL
ID1 NULL
ID2 Primary
ID2 NULL
ID3 primary
ID3 NULL
这篇关于SQL:查询基于组的参数设定值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文