가능한 경우 적은 쿼리를 사용하기 위해이 쿼리를 작성하는 가장 좋은 방법을 알아 내려고 애 쓰고 있습니다. 피벗 테이블이 올바른 방법 일지 궁금합니다.하나의 결과에서 복수의 sql 쿼리
내 3 개 별도의 쿼리 :
SELECT
ISNULL(SUM(ps.UnitsSold), 0) AS UnitsSold,
ISNULL(pg.[Description], 'Other') AS [Description]
FROM dbo.ProductSales ps
LEFT OUTER JOIN dbo.Product p ON ps.ProductID = p.ProductID
LEFT OUTER JOIN dbo.ProductGroupings pg ON p.[Asin] = pg.[Asin]
WHERE (ps.OrderDate BETWEEN GETDATE() - 10 AND GETDATE() - 3) AND ps.DistributionCentreID IN (3)
GROUP BY pg.[Description], ps.DistributionCentreID
SELECT
ISNULL(SUM(ps.UnitsSold), 0) AS UnitsSold,
ISNULL(pg.[Description], 'Other') AS [Description]
FROM dbo.ProductSales ps
LEFT OUTER JOIN dbo.Product p ON ps.ProductID = p.ProductID
LEFT OUTER JOIN dbo.ProductGroupings pg ON p.[Asin] = pg.[Asin]
WHERE (ps.OrderDate BETWEEN GETDATE() - 17 AND GETDATE() - 10) AND ps.DistributionCentreID IN (3)
GROUP BY pg.[Description], ps.DistributionCentreID
SELECT
ISNULL(SUM(ps.UnitsSold), 0) AS UnitsSold,
ISNULL(pg.[Description], 'Other') AS [Description]
FROM dbo.ProductSales ps
LEFT OUTER JOIN dbo.Product p ON ps.ProductID = p.ProductID
LEFT OUTER JOIN dbo.ProductGroupings pg ON p.[Asin] = pg.[Asin]
WHERE (ps.OrderDate BETWEEN GETDATE() - 374 AND GETDATE() - 367) AND ps.DistributionCentreID IN (3)
GROUP BY pg.[Description], ps.DistributionCentreID
이 생산이 (첫 번째 쿼리)와 유사한 결과 등
UnitsSold Description
4154 desc1
764 desc2
.. 생각하는
것들, 설명 (제품 그룹)은 쿼리 중 하나에 존재하지 않을 수 있으므로이를 고려해야합니다.
가 이상적으로는이 같은 작은 선물보고 싶습니다 ..
Description UnitsSoldThisWeek UnitsSoldLastWeek UnitsSoldLastYear
Desc1 54 45 37
등
질문, 문제 또는 인해 잘못된 질의에 불평하는 것은 허용, 난 행복 해요 SQL에 대한 나의 이해를 향상시킵니다.
감사합니다,
마이클
이 같은 진행할 수 있습니다 완벽하게 작동하지만, [설명]과 각 SUM .. 후에 누락 된 쉼표 만있었습니다. 감사합니다! – MichaelEaton