내가 SQL Server의 두 테이블 2008 R2가에서 공통 필드를 기준으로 수와 그룹과 SQL을 작성하는 두 테이블에 걸쳐.어떻게 두 개의 테이블
select
'Circle', (select count(1) from Store where Shape = 'Circle'),
(select count(1) from Record where PickedShape = 'Circle'),
(select count(1) from Record where Finished = 'Y' and PickedShape = 'Circle')
UNION
select
'Square', (select count(1) from Store where Shape = 'Square'),
(select count(1) from Record where PickedShape = 'Square'),
(select count(1) from Record where Finished = 'Y' and PickedShape = 'Square')
UNION...
과 같이 어리석은 방식으로 쓸 수는 있지만 어리석은 것이며 효율적이지 않습니다.
더 영리한 방법은 그룹별로 사용하는 것입니다. 어떤 사람들은 숟가락 먹이 다른 사람을 좋아하지 않을 수 있기 때문에, 그래서 여기에 내가
SELECT
Shape, COUNT(Shape) AS Available, Picked, Finished
FROM
Store
FULL JOIN
(SELECT PickedShape, COUNT(1) As Picked, SUM(CASE WHEN Finished='Y' THEN 1 ELSE 0 END) AS Finished
FROM Record
GROUP BY PickedShape) t2 ON Store.Shape = t2.PickedShape
GROUP BY
Shape, Picked, Finished
을 시도 무엇이며, 출력은 문제가 어디에 당신이 볼 수
Shape Available Picked Finished
NULL 0 2 2
Circle 3 2 1
Square 2 2 0
Triangle 1 NULL NULL
입니다.
먼저 NULL 대신 Shape 아래에 'Oval'이 있어야합니다. FULL JOIN을 사용하면 두 표 모두에서 모든 변형을 볼 수 있지만 표시하지는 않습니다.
두 번째로 누락 된 항목에 대해 NULL 대신 0을 표시하도록 선택 및 완료합니다.
셋째, 가능한 경우 SQL을보다 효율적으로 만들고 싶습니다.
어떻게 이러한 문제를 해결합니까?
감사합니다.
아마도 유니온을 사용해야 할 것입니다. 스키마와 값은 .. – nawfal