2015-05-07 42 views
0

我有这个疑问SQL服务器的动态情况当

SELECT 
    Product, Description, 
    Sum(CASE WHEN Datum = ’01.2011’ THEN [A_Sales] END) AS [A_salesFeb], 
    Sum(CASE WHEN Datum = ’05.2011’ THEN [A_Sales] END) AS [A_salesMay], 
    Sum(CASE WHEN Datum = ’01.2011’ THEN [B_Sales] END) AS [B_salesFeb], 
    Sum(CASE WHEN Datum = ’05.2011’ THEN [B_Sales] END) AS [B_salesMay], 
FROM tblSales 
GROUP BY Product, Description 

现在我需要让动态的水平基准=“”,工作正常。现在说我现在有08.2012和04.2013 它应该通过并进行匹配。 因此,我将其更改为以下查询,但它不起作用。我得到错误的数字

SELECT 
    Product, Description, 
    Sum(CASE WHEN Datum = Datum THEN [A_Sales] END) AS [A_salesFeb], 
    Sum(CASE WHEN Datum = Datum THEN [A_Sales] END) AS [A_salesMay], 
    Sum(CASE WHEN Datum = Datum THEN [B_Sales] END) AS [B_salesFeb], 
    Sum(CASE WHEN Datum = Datum THEN [B_Sales] END) AS [B_salesMay], 
FROM tblSales 
GROUP BY Product, Description 

数据采集:我有12桌,我希望用户能够选择任意两个表动态/或者,然后做一个comparisim。我现在拥有的是静态的。事情是这样的: Sample data

+1

添加一些样本数据,并告诉我们更多的不是“它不工作”。 –

+0

如果您可以提供一些具有所需输出的样本数据,这将是可以解决的。 – Tanner

+0

编辑问题 – James

回答

0

基于该数据,并在您的示例数据所需的结果集 - 这是查询我会写:

select Datum, Product, sum(FebSales13.A_sales) as A_SalesFeb, 
sum(FebSales13.B_sales) as B_SalesFeb, sum(MaySales12.A_sales) as A_SalesMay, 
sum(MaySales12.B_sales) as B_SalesMay 
from 
    (select Datum, Product, A_sales, B_sales 
    from FebSales13) FebSales13 
inner join 
    (select Datum, Product, A_sales, B_sales 
    from MaySales13) MaySales13 
on FebSales13.Datum = MaySales12.Datum 
and FebSales13.Product = MaySales12.Product 
group by Datum, Product