Sql 如何获得不同的id列以防止重复结果?
我需要distinct id=15-我如何才能做到这一点 有两种不同的结果,-3和-9如果每个id只需要一行,请使用行号:Sql 如何获得不同的id列以防止重复结果?,sql,sql-server,Sql,Sql Server,我需要distinct id=15-我如何才能做到这一点 有两种不同的结果,-3和-9如果每个id只需要一行,请使用行号: 12 102 0 0 0 0 0 0 0 1 1 1 False False False False False False False False False False False False False False False False .... Fals
12 102 0 0 0 0 0 0 0 1 1 1 False False False False False False False False False False False False False False False False .... False 0 شاغر NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
14 104 0 0 0 0 0 0 0 1 1 1 False False False False False False False False False False False False False False False False .... False 0 شاغر NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
15 105 0 0 0 0 0 0 0 1 1 1 False False False False False False False False False False False False False False False False .... False 0 شاغر 15 يومي 25/09/2017 02/10/2017 10 0 105 0.0000 سالم علي محمد بدون بدون $ 0.0000 0.0000 0.0000 ............ 22/09/2017 10:35:24 م NULL محجوز سعودي 123456 -2 -9 0.00 0.00 0.00
15 105 0 0 0 0 0 0 0 1 1 1 False False False False False False False False False False False False False False False False .... False 0 شاغر 16 يومي 28/09/2017 28/09/2017 5 0 105 0.0000 سالم علي محمد بدون بدون $ 0.0000 0.0000 0.0000 ............ 23/09/2017 01:31:21 ص NULL محجوز سعودي 123456 -5 -5 0.00 0.00 0.00
16 106 0 0 0 0 0 0 0 1 1 1 False False False False False False False False False False False False False False False False .... False 0 شاغر NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
注意到我在WHERE条件中添加了括号。此逻辑与您的逻辑稍有不同,但这可能是您真正想要的。SELECT v.*从SELECT i.*中,按id分区上的行数按id排序按房间中的seqnum排序监视器视图为i,其中状态为NULL或状态为'i',diffarest<0 v,其中seqnum=1;
12 102 0 0 0 0 0 0 0 1 1 1 False False False False False False False False False False False False False False False False .... False 0 شاغر NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
14 104 0 0 0 0 0 0 0 1 1 1 False False False False False False False False False False False False False False False False .... False 0 شاغر NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
15 105 0 0 0 0 0 0 0 1 1 1 False False False False False False False False False False False False False False False False .... False 0 شاغر 15 يومي 25/09/2017 02/10/2017 10 0 105 0.0000 سالم علي محمد بدون بدون $ 0.0000 0.0000 0.0000 ............ 22/09/2017 10:35:24 م NULL محجوز سعودي 123456 -2 -9 0.00 0.00 0.00
15 105 0 0 0 0 0 0 0 1 1 1 False False False False False False False False False False False False False False False False .... False 0 شاغر 16 يومي 28/09/2017 28/09/2017 5 0 105 0.0000 سالم علي محمد بدون بدون $ 0.0000 0.0000 0.0000 ............ 23/09/2017 01:31:21 ص NULL محجوز سعودي 123456 -5 -5 0.00 0.00 0.00
16 106 0 0 0 0 0 0 0 1 1 1 False False False False False False False False False False False False False False False False .... False 0 شاغر NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
SELECT v.*
FROM (SELECT v.*,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY id) as seqnum
FROM rooms_monitorview
WHERE (state IS NULL OR state = 'محجوز') AND diffarest < 0
) v
WHERE seqnum = 1;