SQL一个选择具有不同的where子句

时间:2014-10-27 11:58:40

标签: sql

我需要选择不同的where子句(使用不​​同的产品代码)。我需要的结果如下。

我的表格如下:

ApID | Date       | Code | Qty | Price | Sum
222  | 2014-10-11 | 555  | 1   | 2,22  | 2,22
222  | 2014-10-11 | 555  | 1   | 2,22  | 2,22
222  | 2014-10-11 | 333  | 1   | 3,33  | 3,33
222  | 2014-10-12 | 555  | 1   | 2,22  | 2,22

我的查询:

SELECT 
CAST(Date AS DATE) as 'Data',
SUM(Qty*Price) AS 'Sum',
SUM(Qty) AS 'Qty'
  FROM Table
  WHERE ApID = 222
  AND Data BETWEEN '2014-10-11' AND '2014-10-13' 
  AND Code LIKE '555'
GROUP BY CAST(KvitoGalva.Data AS DATE)

我得到的结果如下:

Data       | Sum  | Qty
2014-10-11 | 4.44 | 2
2014-10-12 | 2.22 | 1

我需要在一个表格中显示结果:

Data       | Sum 555  | Qty 555 | Sum 333 | Qty 333 |
2014-10-11 | 4.44     | 2       | 3.33    | 1       |
2014-10-12 | 2.22     | 1       | 0       | 0       |

尝试:

SELECT((Select1),(Select2))
----------------------------
SELECT 1
union
select 2

1 个答案:

答案 0 :(得分:0)

您可以使用条件聚合执行此操作:

SELECT CAST(Date AS DATE) as Data,
       SUM(case when code = '555' then Qty*Price else 0 end) AS Sum555,
       SUM(case when code = '555' then Qty else 0 end) AS Qty555,
       SUM(case when code = '333' then Qty*Price else 0 end) AS Sum333,
       SUM(case when code = '333' then Qty else 0 end) AS Qty333
FROM Table t
WHERE ApID = 222 AND
      Data BETWEEN '2014-10-11' AND '2014-10-13' AND
      Code IN ('555', '333')
GROUP BY CAST(KvitoGalva.Data AS DATE);

注意:仅对字符串和日期常量使用单引号。您不需要列别名的引号,如果您这样做,那么您的数据库将有更好的字符来转义名称。

相关问题