SQL查询硬编码更新

时间:2015-11-18 11:32:34

标签: sql

如果我执行此查询,我会得到以下结果

SELECT Month_Name,
Count(SalesID) AS Toal
FROM Sales
Group by Month_Name

我有以下结果

Month_Name  Toal
Apr-15      341
May-15      314
Jun-15      342
Jul-15      327
Aug-15      179
Sep-15      234
Oct-15      286
Nov-15      171   

问题:上个月我有2月15日和3月15日的数据,但他们不在桌面上。我被告知不要用数字更新表格 我被给了2月15日和3月15日。数字如下

Feb-15 = 349

Mar-15 = 312

有没有办法可以通过在查询中对其进行硬编码来编写查询来反映这两个月,以便结果看起来像下表

Month_Name  Toal
Feb-15      349
Mar-15      312
Apr-15      341
May-15      314
Jun-15      342
Jul-15      327
Aug-15      179
Sep-15      234
Oct-15      286
Nov-15      171  

2 个答案:

答案 0 :(得分:1)

(
SELECT
 Month_Name,
 Count(SalesID) AS Toal
FROM
 Sales
Group by 
 Month_Name
) 
UNION ALL 
(
SELECT 
  'Feb-15' AS Month_Name, 
  349 AS Total
) 
UNION ALL 
(
SELECT 
  'Mar-15' AS Month_Name, 
  312 AS Total
) 

答案 1 :(得分:1)

您将使用UNION ALL添加两个记录。为了生成这样的记录,你只需在没有表或DUAL的情况下选择它们 - 两者中的哪一个取决于你正在使用的DBMS。

由于您当然希望记录按月排序,因此表中必须有一个排序键才能实现此目的。在下面的查询中,我假设它是一个名为sortkey的正数值,并且是两个月后的第一个。根据您的需要进行调整。

select month_name, total
from
(
  select month_name, count(*) as total, sortkey from sales group by month_name
  union all
  select 'Feb-15', 349, -2 -- here you may have to add FROM DUAL
  union all
  select 'Mar-15', 312, -1 -- here too
) all_months
order by sortkey;