Sql server 选择一个有最小值的值

Sql server 选择一个有最小值的值,sql-server,tsql,Sql Server,Tsql,我试图选择两列的最小值为LOC\u LOC\u ID 有什么想法吗 SELECT DISTINCT LOC_LOC_ID as S, MIN(LWWKS_TOTAL_SALES_VAL) as V, MIN(LWWKS_TOTAL_SALES_QTY) as Q FROM Apollo.dbo.TBL_FACT_SALES_LWWKS GROUP BY LOC_LOC_ID 将分组依据查询包装到派生表中。然后使用case表达式返回最小值:

我试图选择两列的最小值为
LOC\u LOC\u ID

有什么想法吗

SELECT DISTINCT 
    LOC_LOC_ID as S, 
    MIN(LWWKS_TOTAL_SALES_VAL) as V, 
    MIN(LWWKS_TOTAL_SALES_QTY) as Q
FROM 
    Apollo.dbo.TBL_FACT_SALES_LWWKS 
GROUP BY  
    LOC_LOC_ID

分组依据
查询包装到派生表中。然后使用
case
表达式返回最小值:

select s, case when v < q then v else q end
from
(
    SELECT LOC_LOC_ID as S, 
           MIN(LWWKS_TOTAL_SALES_VAL) as V, 
           MIN(LWWKS_TOTAL_SALES_QTY) as Q
    FROM 
    Apollo.dbo.TBL_FACT_SALES_LWWKS 
    GROUP BY LOC_LOC_ID
) dt

如果我没有错,那么您可以按LOC\u LOC\u ID分组无需执行select distinct,group by不会返回重复项!您是否可以和一个样本数据集以及该样本的所需输出,以便我们了解您是否需要每个位置id以及两个id中的较小者:销售值和销售数量-或者-您需要所有记录中具有两个id的位置id:最低销售值和最低销售数量此输出位置id以及以下两者中的较小者
销售值
销售数量
,非常整洁。这可能有助于OP澄清他是否想要这样做,或者他是否想要同时拥有这两项的位置id:所有记录中的最低销售价值和所有记录中的最低销售数量。@zedfoxus,是的,也许我误解了这个问题。不太清楚OP想要什么。
with cte as
(
    SELECT LOC_LOC_ID as S, 
           MIN(LWWKS_TOTAL_SALES_VAL) as V, 
           MIN(LWWKS_TOTAL_SALES_QTY) as Q
    FROM 
    Apollo.dbo.TBL_FACT_SALES_LWWKS 
    GROUP BY LOC_LOC_ID
)
select distinct s, v, q
from cte
where v = (select min(v) from cte)
   or q = (select min(q) from cte)