【发布时间】:2019-07-19 09:21:53
【问题描述】:
我对数据库查询不是很了解,但遇到错误
"如果 SELECT DISTINCT 是,ORDER BY 项目必须出现在选择列表中 指定。”
使用以下查询。我在谷歌上搜索,如果使用 Distinct 但仍然无法获得它,则发现该订单需要分组。谁能帮帮我。
SELECT DISTINCT
P1.*
FROM T_PRD P1
LEFT JOIN T_PRD P2 ON P1.baseprdid = P2.prdid
INNER JOIN T_PRD_NM_VENDOR prdNmVendor ON P1.prdId = prdNmVendor.prdId
INNER JOIN T_VENDOR_NM vendorNM ON prdNmVendor.vendorNMId = vendorNM.vendorNMId
INNER JOIN T_NM nm ON vendorNM.NMId = nm.NMId
INNER JOIN T_PRD_VENDOR prdVendor ON prdVendor.PRDId = P1.PRDId
INNER JOIN T_VENDOR vendor ON prdVendor.vendorId = vendor.vendorId
INNER JOIN T_CSTMR_PRD_REF custPrd ON custPrd.ProductId = P1.PRDId
INNER JOIN T_CSTMR cstmr ON custPrd.ChennelCstrId = cstmr.cstmrid
WHERE 1 = 1
AND P1.Lifecycle = 2
AND P1.AutoCreated = 0
AND vendor.vendorId = 1
AND P1.VendorEnfId = 1
AND cstmr.cstmrid = 2008
ORDER BY CASE
WHEN P1.BASEPRDID = 0
THEN P1.PRDNAME
ELSE P2.PRDNAME
END ASC,
BASEPRDID;
【问题讨论】:
-
在SELECT部分添加P2.PRDNAME和BASEPRDID后可以试试吗?
-
你的 DBMS 是什么 ..?
-
微软 Sql 服务器
标签: sql sql-order-by case distinct