我想按照下面的方式对我的工作站代码进行分组,但是我的结果集会不断输出所有内容,并且会多次输出others
。我想通过我的别名将所有内容分组,但是对于我的工作站others
,它似乎并不像是对它进行分组。按别名分组
WITH
station as (
SELECT
CASE
WHEN t.station='AB' THEN 'AB'
WHEN t.station='AS' THEN 'AS'
WHEN t.station='KF' THEN 'KF'
WHEN t.station='PR' THEN 'PR'
WHEN t.station='SV' THEN 'SV'
WHEN t.station='RE' THEN 'RE'
WHEN t.station='TVR' OR t.station='TDT' THEN 'TDT'
ELSE 'Others'
END AS 'station'
FROM t
)
porders as (
SELECT
CASE
WHEN t.station='AB' THEN 'AB'
WHEN t.station='AS' THEN 'AS'
WHEN t.station='KF' THEN 'KF'
WHEN t.station='PR' THEN 'PR'
WHEN t.station='SV' THEN 'SV'
WHEN t.station='RE' THEN 'RE'
WHEN t.station='TVR' OR t.station='TDT' THEN 'TDT'
ELSE 'Others'
END AS 'station',
COUNT(*) AS 'p_orders'
FROM a, t, v, station
WHERE a.psn = t.psn
AND t.highest_psn = 0
AND v.detailno_i = a.detailno_i
AND t.station!=''
AND a.status=1
AND v.order_type='P'
GROUP BY t.station
)
SELECT station.station, porders.p_orders
FROM station join porders on(station.station=porders.station)
输出:
station|porders
---------------
AB 2
AS 4
KF 3
PR 10
SV 2
RE 20
TDT 10
Others 1
Others 2
Others 3
所需的输出:
station|porders
---------------
AB 2
AS 4
KF 3
PR 10
SV 2
RE 20
TDT 10
Others 6
等一下,您使用的是什么RDBMS?,您的第二个CTE如何不使用“GROUP BY”而使用聚合函数? – Lamak
对不起,只是做了一个编辑它我忘了复制该部分..我正在使用Microsoft SQL Server – ltsai