Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL子查询:如果条件为true,则获取此“组”的所有行;如果条件为false,则获取非_Sql_Sql Server_Tsql - Fatal编程技术网

SQL子查询:如果条件为true,则获取此“组”的所有行;如果条件为false,则获取非

SQL子查询:如果条件为true,则获取此“组”的所有行;如果条件为false,则获取非,sql,sql-server,tsql,Sql,Sql Server,Tsql,作为第一次查询的结果,我有以下格式的数据。 现在我需要添加带有条件的第二个查询,这对我来说很难,也许有人可以帮我解决这个问题 条件是: 如果product_id最高的customers行的类型为Y,则取给定customer的所有行,如果为X,则取非 因此,我需要以某种方式为每个具有最高产品id的客户行进行选择,检查该行中的类型是否为Y,然后根据结果获取所有或非给定客户数据 index customer product_id type ----------------------

作为第一次查询的结果,我有以下格式的数据。 现在我需要添加带有条件的第二个查询,这对我来说很难,也许有人可以帮我解决这个问题

条件是:

如果product_id最高的customers行的类型为Y,则取给定customer的所有行,如果为X,则取非

因此,我需要以某种方式为每个具有最高产品id的客户行进行选择,检查该行中的类型是否为Y,然后根据结果获取所有或非给定客户数据

index    customer    product_id    type
-----------------------------------------
1           1          51           X      
2           1          42           Y      
3           1          11           X      
            
4           2          4            Y      
5           2          2            Y      
            
6           3          41           Y      
7           3          22           Y      
8           3          21           X      
9           3          20           X      

10          4          16           X
11          4          15           Y
12          4          14           Y
13          4          13           Y
14          4          12           Y
因此,在上面的示例中,我想返回行:4,5,6,7,8,9

使用第一个值窗口函数:

SELECT [index], [customer], [product_id], [type]
FROM (
  SELECT *, FIRST_VALUE([type]) OVER (PARTITION BY [customer] ORDER BY [product_id] DESC) [value]
  FROM tablename
) t
WHERE [value] = 'Y'
看。 结果:


让我给你最后一票,你需要达到10万。。。祝贺你取得这一成就@GMB谢谢,但从我看到的情况来看,有一个连续的+4向上投票,这将被系统逆转。。。
> index | customer | product_id | type
> ----: | -------: | ---------: | :---
>     4 |        2 |          4 | Y   
>     5 |        2 |          2 | Y   
>     6 |        3 |         41 | Y   
>     7 |        3 |         22 | Y   
>     8 |        3 |         21 | X   
>     9 |        3 |         20 | X