-- first select the model codes.
WITH models AS
(
SELECT DISTINCT MODEL_CODE
FROM TABLENAME
), val_list AS
(
-- then left join back to the table and pick the style or default.
SELECT m.MODEL_CODE, COALESCE(x.PRICE,d.PRICE) AS PRICE
FROM models m
LEFT JOIN TABLENAME d ON d.MODEL_CODE = m.MODEL_CODE AND d.STYLE_CODE = 'STD'
LEFT JOIN TABLENAME x ON x.MODEL_CODE = m.MODEL_CODE AND x.STYLE_CODE = 'FEL'
),
SELECT SUM(PRICE)
FROM val_list
注意,如果你不能使用CTE下面會做同樣的事情:
SELECT SUM(PRICE)
FROM (
SELECT m.MODEL_CODE, COALESCE(x.PRICE,d.PRICE) AS PRICE
FROM (SELECT DISTINCT MODEL_CODE FROM TABLENAME) m
LEFT JOIN TABLENAME d ON d.MODEL_CODE = m.MODEL_CODE AND d.STYLE_CODE = 'STD'
LEFT JOIN TABLENAME x ON x.MODEL_CODE = m.MODEL_CODE AND x.STYLE_CODE = 'FEL'
) val_list
要看到這是如何工作的,你可以看看不同的部分 - 嘗試
-- first select the model codes.
WITH models AS
(
SELECT DISTINCT MODEL_CODE
FROM TABLENAME
)
SELECT m.MODEL_CODE, x.PRICE, d.PRICE
FROM models m
LEFT JOIN TABLENAME d ON d.MODEL_CODE = m.MODEL_CODE AND d.STYLE_CODE = 'STD'
LEFT JOIN TABLENAME x ON x.MODEL_CODE = m.MODEL_CODE AND x.STYLE_CODE = 'FEL'
和
-- first select the model codes.
WITH models AS
(
SELECT DISTINCT MODEL_CODE
FROM TABLENAME
), val_list AS
(
-- then left join back to the table and pick the style or default.
SELECT m.MODEL_CODE, COALESCE(x.PRICE,d.PRICE) AS PRICE
FROM models m
LEFT JOIN TABLENAME d ON d.MODEL_CODE = m.MODEL_CODE AND d.STYLE_CODE = 'STD'
LEFT JOIN TABLENAME x ON x.MODEL_CODE = m.MODEL_CODE AND x.STYLE_CODE = 'FEL'
)
SELECT *
FROM val_list
你有刺過它自己嗎?如果是這樣,你正在處理的查詢有什麼問題? – 2015-02-10 15:21:05
您正在使用哪種RDBMS? – SoulTrain 2015-02-10 15:21:15
我們正在使用Microsoft SQL Server。我是非常新的SQL,迄今爲止我所能獲得的最好結果是返回目標行和STD行上的價格總和。 – acmowad 2015-02-10 15:27:45