看过并可能问错了方式,但找不到与我想要的相关的问题。
我有一个有 4 个字段的表,一个用于另一条记录的 ID,然后是成本类型、补充类型和金额。
需要能够通过其中一种 ID 的 Supplement 类型添加两种成本类型的金额字段。
PCM_ID COST_TYPE SUPPLEMENT_TYPE AMOUNT
-----------------------------------------------------
2238 AGENT SS 85.785
2238 DBCOST SS 77.9891
2238 DBCOST_TAX SS 7.7989
2238 DBSELL SS 85.785
2238 DBSELL_TAX SS 8.5785
2238 PCCOM_TAX SS 0
2238 PCMUP_TAX SS 0
2238 RETAIL SS 85.785
所以去为 SS Supplement 添加 DBCOST 和 DBCOST_TAX。
我只是不知道如何进入查询来给我上面每个 PCM_ID 的值。
我的 SQL 技能非常有限,基本上是自学的,所以这就是我目前所掌握的。
SELECT SUM (pcs.amount)
FROM dbo.PCS
JOIN dbo.pcm ON pcm.pcm_id = PCS.PCM_ID
WHERE pcs.pcm_id = pcm.pcm_id
and pcs.supplement_type = 'SS'
AND pcs.cost_type IN ('DBCOST','DBCOST_TAX')
它是更大查询的一部分,但只有这部分有问题。
希望这里有足够的信息可以帮助我。
加上这个 8 月 10 日,
以下是我需要的脚本,少了一些直接数据的字段。
Select
ID=pcm.pcm_id,
Name=pcm.name,
Half_TW_Cost=(SELECT round (SUM(ppc.pax_tw),2) FROM dbo.ppp
JOIN dbo.ppc ON ppp.ppp_id = ppc.ppp_id
WHERE pcp.pcp_id = ppp.pcp_id AND ppc.cost_type IN ('DBCOST','DBCOST_TAX')),
Half_TW_Sell=(SELECT round (SUM(ppc.pax_tw),2) FROM dbo.ppp
JOIN dbo.ppc ON ppp.ppp_id = ppc.ppp_id
WHERE pcp.pcp_id = ppp.pcp_id AND ppc.cost_type IN
('AGENT','DBSELL_TAX','PCMUP_TAX','PCCOM_TAX')),
SS_Cost=(SELECT round (SUM (pcs.amount),2) FROM dbo.PCS
JOIN dbo.pcm ON pcm.pcm_id = PCS.PCM_ID
WHERE pcs.pcm_id = pcm.pcm_id AND pcs.supplement_type = 'SS' AND pcs.cost_type
IN ('DBCOST','DBCOST_TAX')),
Range_Seq=pcp.seq,
Pax_Range=pcp.pxno
FROM dbo.pcm
LEFT JOIN dbo.pcp ON pcp.pcm_id = pcm.pcm_id
where pcm.pcm_id = 2238
group by PCM.PCM_ID, pcm.NAME, pcp.PCP_ID, pcp.SEQ, pcp.PXNO
我得到的结果如下:
ID Name Half_TW_Cost Half_TW_Sell SS_Cost Range_Seq Pax_Range
-----------------------------------------------------------------------------------------
2238 Brett test PCM Output 106.1200 117.5300 546913.1800 1 10
2238 Brett test PCM Output 99.7200 110.2400 546913.1800 2 15
2238 Brett test PCM Output 96.2400 106.2700 546913.1800 3 20
2238 Brett test PCM Output 94.1500 103.8900 546913.1800 4 25
2238 Brett test PCM Output 88.5900 102.3000 546913.1800 5 30
2238 Brett test PCM Output 92.6100 103.2300 546913.1800 6 2
SS_Cost 的值是表的总和,而不是 PCM_ID 的总和。我追求的值是 85.79,即 DBCOST + DBCOST_TAX。我知道这是上面的代理值,但这不包括该记录上的任何标记,所以这会改变,所以我真的需要 DBCOST 和 TAX。此外,我无法计算税,因为某些服务没有税,因此并不总是 10%。任何只是为了让 SS_Cost 成为单个 PCM 的价值的帮助都将不胜感激。