저는 SQL에 익숙하지 않아서 아마도 내 쿼리에 문제가있는 것 같습니다.하지만 내 문제는 아래 쿼리를 실행하여 내 테이블에 많은 중복이 생기는 것입니다.Union에서 중복
두 테이블 모두 동일한 주식 번호를 가진 항목 목록을 가지고 있기 때문에 나는 주식 번호에 가입하고 있습니다. 문제는 내가 목록에서 동일한 재고 번호를 얻고 있지만 하나의 행에는 매출액과 고용 일수가 있고 다른 하나에는 두 번째 선택에서 매출액과 고용 일수의 나머지 정보가 있습니다.
도움이 될 것입니다.
(SELECT NULL AS 'ITEM_ID',
stock_items.stock_number AS 'STOCK NUMBER',
SUM(stock_assign.turnover) AS 'TURNOVER',
SUM(stock_assign.days_on_hire) AS 'DAYS ON HIRE',
NULL AS ' CAT',
NULL AS 'ITEM NAME',
NULL AS 'DEPOT LOC',
NULL AS 'DISPOSAL DATE',
NULL AS 'DISPOSAL TYPE',
NULL AS 'DATE CREATED',
NULL AS 'CREATED BY',
NULL AS 'COST PRICE'
FROM stock_assign
left join stock_items
ON stock_assign.stock_number = stock_items.stock_number
left join depots
ON depot_id = depots.dpt_id
GROUP BY stock_items.stock_number,
depots.dpt_name)
UNION
(SELECT stock_items.item_id AS 'ITEM_ID',
stock_items.stock_number AS 'STOCK NUMBER',
NULL AS 'TURNOVER',
NULL AS 'DAYS ON HIRE',
stock_items.equipment_class AS ' CAT',
stock_items.name AS 'ITEM NAME',
depots.dpt_name AS 'DEPOT LOC',
stock_items.disposal_date AS 'DISPOSAL DATE',
stock_items.disposal_type AS 'DISPOSAL TYPE',
stock_items.date_available AS 'DATE CREATED',
users.usr_name AS 'CREATED BY',
fixed_assets.cost_amount AS 'COST PRICE'
FROM stock_items
left join users
ON users.usr_id = stock_items.userid_created
left join depots
ON stock_items.depot_id_located_at = depots.dpt_id
left join fixed_assets
ON stock_items.item_id = fixed_assets.stock_item_id)
ORDER BY 'STOCK NUMBER' ASC
감사로 대체 - 이것이 내가 필요한 것 같습니다하지만 난 문제에 얻는 데 cte_Item의 필드를 인식 할 때 CTE 참조를 인식하지 못하는 것 같습니다. SQL Server 2012 Express와 관련이 있다면 cte_Item 및 cte_Item을 사용해 보았습니다. cte_Assignemnt WITH 첫 번째 문에 AS를 추가해야했습니다. AS – Andy00001
누락 된 'AS'항목을 업데이트했습니다. 나는 찾고 있지만 더 이상 문제를 볼 수 없습니다. ** 수정 **, 두 가지 오타가 발견되어 수정되었습니다. –
ok cool - 나는 여전히 CTE를 사용하는 방법을 찾았지만 올바르지 않은 것 같지만 잘못된 개체 이름 'cte.Item'을 구문 어딘가에 넣을 수있다. – Andy00001