2016-01-13 2 views
1

Как скрыть/удалить повторяющиеся строки из этого запросаскрыть повторяющиеся строки SQL

SELECT 
    CASE 
     WHEN capex_billofmaterialitem.decQuantity <> '0' 
     THEN '0' 
     ELSE capex_billofmaterialitem.decQuantity 
    END AS decQuantity, 
    capex_billofmaterialitem.* 
FROM 
    capex_billofmaterialitem, 
    capex_billofmaterial 
WHERE 
    capex_billofmaterialitem.szbillofmaterialid = capex_billofmaterial.szbillofmaterialid 
    AND capex_billofmaterial.szprojectcode = '" + szProjectCode + "'"; 
+3

использование 'Distinct' ........... –

+3

[Вредные привычки пинать: использование старого стиля JOIN и] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/ 10/08/bad-habits-to-kick-use-old-style-joins.aspx) - этот стиль таблиц * в стиле старого стиля * был заменен на * правильный * ANSI 'JOIN' синтаксис в ANSI - ** 92 ** Стандарт SQL (** более 20 лет ** назад), и его использование не рекомендуется –

+0

Можете ли вы включить примеры записей для таблиц и ожидаемый результат? –

ответ

1

Попробуйте использовать DISTINCT -

SELECT DISTINCT CASE 
      WHEN capex_billofmaterialitem.decQuantity <> '0' 
       THEN '0' 
      ELSE capex_billofmaterialitem.decQuantity 
     END AS decQuantity, 
     capex_billofmaterialitem.* 
FROM capex_billofmaterialitem 
JOIN capex_billofmaterial ON capex_billofmaterialitem.szbillofmaterialid = capex_billofmaterial.szbillofmaterialid 
WHERE capex_billofmaterial.szprojectcode = @szProjectCode 
+0

is не работает :( –

+0

@Ubay Maulana, пожалуйста, предоставьте фактические и ожидаемые результаты – Devart

0

Попробуйте этот код

с использованием row_number() это безопасный метод

WITH CTE_Dup AS 
(

SELECT * ROW_NUMBER()OVER (PARTITIONBY SalesOrderno, ItemNo ORDER BY SalesOrderno, ItemNo) 
AS ROW_NO 
from dbo.SalesOrderDetails 
) 
Delete FROM CTE_Dup; 
Смежные вопросы