通过以下查询:
SELECT id
, typ_produktu
, miary_wewnetrzne
, CASE
WHEN symbol LIKE '760%' THEN SUM(sal-type_number)
ELSE NULL
END sum_760
, CASE
WHEN symbol LIKE '860%' THEN SUM(sal-type_number)
ELSE NULL
END sum_860
FROM 537_MV
WHERE
rep_date = 20180930
AND id = 'DP\1601'
AND miary_wewnetrzne IN ('WN', 'wynik')
AND typ_w IN( 'RT_SZT', 'brak')
GROUP BY
id
, symbol
, typ_produktu
, miary_wewnetrzne
, typ_w
我得到这张桌子:
id typ_produktu miary_wewnetrzne sum760 sum860
------- ------------ ---------------- ------ ------
DP\1601 brak wynik 17 0
DP\1601 brak wynik 9 0
DP\1601 brak wynik 1 0
DP\1601 brak wynik 0 1
DP\1601 AIN WN 0 0
我如何编写查询以仅在表中获取ID的一条记录(即DP \ 1601),如果typ_produktu ='brak',我想在该示例中将其替换为该ID的任何其他记录是“ AIN”。
答案 0 :(得分:1)
您可以使用聚合:
SELECT id,
COALESCE(MAX(CASE WHEN typ_produktu <> 'BRAK' THEN typ_produktu END), MAX(typ_produktu)) as typ_produktu
MAX(miary_wewnetrzne)
SUM(CASE WHEN symbol LIKE '760%' THEN sal - type_number END) as sum_760
SUM(CASE WHEN symbol LIKE '860%' THEN sal - type_number END) as sum_860
FROM 537_MV
WHERE rep_date = 20180930 AND
id = 'DP\1601' AND
miary_wewnetrzne IN ('WN', 'wynik') AND
typ_w IN ( 'RT_SZT', 'brak')
GROUP BY id;
请注意,如果您希望每id
行一行,那么它应该是GROUP BY
中的唯一列。
答案 1 :(得分:0)
使用条件聚合并从分组依据中删除typ_w列
SELECT id
, typ_produktu
, miary_wewnetrzne
, sum(CASE
WHEN symbol LIKE '760%'
THEN sal-type_number
ELSE 0
END) as sum_760
, sum(CASE
WHEN symbol LIKE '860%'
THEN sal-type_number
ELSE 0
END) as sum_860 FROM
537_MV WHERE rep_date = 20180930 AND id = 'DP\1601'
AND miary_wewnetrzne IN ('WN', 'wynik')
AND typ_w IN( 'RT_SZT', 'brak') GROUP BY
id, typ_produktu, miary_wewnetrzne