SQL中的Order By逻辑

时间:2017-09-29 04:48:30

标签: sql-server

0

我有一张桌子可以得到结果作为照片中的一张。
但是,我想通过以下方式获得结果:
1.首先,比较val字段中的数字,哪个组字段的数据必须是' total'。
2.然后,项目字段中具有相同值的所有数据将根据条件1的订单获得订单 照片的右边部分是我想要的结果。我应该如何使用ORDER BY设置逻辑?谢谢。

1 个答案:

答案 0 :(得分:1)

一种方法是加入子查询,查找每个项目的总计,然后使用它进行排序。

SELECT
    t1.item,
    t1.[group],
    t1.val
FROM yourTable t1
INNER JOIN
(
    SELECT item, val AS total
    FROM yourTable
    WHERE [group] = 'total'
) t2
    ON t1.item = t2.item
ORDER BY
    t2.total DESC,
    t1.item,
    CASE WHEN t1.[group] = 'total' THEN 1 ELSE 0 END,
    t1.[group];