CASE 문으로 여러 열로 개수를 선택할 때 문제가 발생했습니다. CASE 문이 어떻게 작동하는지는 C/C++의 IF 문과 같습니다. 값이 X 인 경우 Y를 수행합니다.어떻게 알 수없는 사례가 있습니까?
이 문제를 설명하기 위해 '이름'열의 이름을 계산하고 '날짜'열을 기준으로 그룹화하는 쿼리를 제공합니다.
SELECT [Date]
COUNT(CASE WHEN [Name] = 'John' THEN 1 ELSE NULL END) AS 'John',
COUNT(CASE WHEN [Name] = 'Joe' THEN 1 ELSE NULL END) AS 'Joe',
COUNT(CASE WHEN [Name] = 'Moe' THEN 1 ELSE NULL END) AS 'Moe',
COUNT(CASE WHEN [Name] = 'Nick' THEN 1 ELSE NULL END) AS 'Nick',
COUNT(CASE WHEN [Name] = 'Zack' THEN 1 ELSE NULL END) AS 'Zack'
FROM [MyDatabase].[dbo].[LogInData]
WHERE [Date] >= '2013-07-01'
GROUP BY [Date]
여기서는 계산할 이름을 알고 있다고 가정합니다. 새로운 쿼리 이름과 단일 쿼리 행에 정의되지 않은 이름을 계산하려면 어떻게해야합니까? 이 방법으로 테이블의 모든 DISTINCT 이름을 동적으로 검색하고 새 이름을 코드에 추가하지 않고도 위와 같이 별도로 계산할 수 있습니까?
도움을 주셔서 감사합니다. 복잡한 쿼리 작성을 위해 SQL을 활용하는 다양한 방법을 배우려고합니다. 정확한 답변을 찾는 것이 아니라 올바른 방향으로 나를 가리켜 줄 수있는 도움이 될 것입니다. 나는 나에게 주어진 것에 반대하여 지식을 배우고 확장하기위한 모든 것입니다. 아마도 당신은 피벗 수
SELECT [Date], [Name], COUNT(*)
FROM ...
GROUP BY [Date], [Name];
을,하지만 당신은 반드시 쿼리에서 그렇게 할 필요가 없습니다 :
이렇게하려면 동적 SQL을 사용해야합니다. 나는 [날짜], [이름], 개수 (1) ....를 선택하고 프리젠 테이션 레이어에서 피벗을 처리하도록 권하고 싶습니다. – cadrell0
2008 년 또는 그 이상인 경우 –