我是SQL Server新手/用於MySQL數據庫,我遇到了一個我從未遇到過的與MySQL有關的問題。我正在尋求將所有當前的保單編號,所屬公司/人員的名稱,保費總額,以及他們是否擁有我們稱之爲「設備細分」的覆蓋範圍。這很簡單,我遇到的問題是分組。我想只按一列分組,也就是一個不同的保單號碼,公司名稱,保費的總和(可能有幾個保費金額都是負值和正值,所以我想總結一下,看看真實總額是多少),以及設備故障的簡單Yes或No列。由T-SQL與MySQL組成(單列)
這裏是我運行查詢:
SELECT pol_num as policy_number,
insd_name as insureds_name,
SUM(amt) as 'total_premium',
(SELECT
CASE
WHEN cvg_desc = 'Equipment Breakdown'
THEN 'Y'
ELSE 'N'
END) as 'equipment_breakdown'
FROM bapu.dbo.fact_prem
WHERE '2014-05-06' between d_pol_eff and d_pol_exp
AND amt_type = 'Premium'
AND amt_desc = 'Written Premium'
GROUP BY pol_num
ORDER BY policy_number
我得到一個錯誤說我需要按insd_name和cvg_desc爲好,但我不希望如此,因爲它給了我重複的策略數字。
這裏是我所得到的一個例子,當我組的一切它告訴我:
policy_number insureds_name total_premium equipment_breakdown
001 company a 0.00 n
001 company a 25,000.00 n
001 company a -10,000.00 n
002 company b 100.00 y
002 company b 10,000.00 y
這裏是我想要的結果的一個例子:
policy_number insureds_name total_premium equipment_breakdown
001 company a 15,000.00 n
002 company b 10,100.00 y
基本上,我只是想根據保單號進行分組並將保費金額相加。以上是我如何在MySQL中實現這一點,我如何才能實現我在SQL Server中尋找的結果?
感謝
@cory和約阿希姆伊薩克森,這些工作都, 非常感謝你。我瘋了嗎?從我記憶中來看,在MySQL中這些都不是必須的,你可以只用一列進行分組,而不用大驚小怪。 – user3365317
@ user3365317是的,問題在於我的答案底部,MySQL可以給同一個查詢運行兩次不同的結果。 SQL Server具有更嚴格(和標準)的分組規則,每次都會返回相同的答案。 –
@ user3365317你不一定瘋了,但MySQL在這方面只是明顯的錯誤。 – podiluska