如何在我现有的T-SQL查询中添加一些虚拟值? [重复]

问题描述 投票:-1回答:2

这个问题在这里已有答案:

我正在使用SQL Server 2014,我有以下T-SQL查询:

USE MyDatabase
SELECT [Property]
       ,[Pax]
       ,[Mth]
       ,'FY1718' as [ID]
FROM Table1
WHERE [Mth] between '2017-07-01' and '2018-06-01'
UNION ALL
SELECT [Property]
       ,[Pax]
       ,[Mth]
       ,'FY1819' as [ID]
FROM Table2
WHERE [Mth] between '2018-07-01' and '2019-06-01'

输出的摘录:

Property    Pax   Mth           ID
 TRO        120   2017-07-01    FY1718
 EBC        95    2018-08-01    FY1819

我想创建2个具有以下值的虚拟条目:

EBC,  0,  2017-09-01, FY1718
GHY,  0,  2017-10-01, FY1718

我的最终输出应如下所示:

 Property   Pax   Mth           ID
 TRO        120   2017-07-01    FY1718
 EBC        95    2018-08-01    FY1819
 EBC        0     2017-09-01    FY1718
 GHY        0     2017-10-01    FY1718

如何在最终输出中添加这些行?

sql sql-server tsql
2个回答
3
投票

使用UNION ALL

SELECT [Property]
       ,[Pax]
       ,[Mth]
       ,'FY1718' as [ID]
FROM Table1
WHERE [Mth] between '2017-07-01' and '2018-06-01'
UNION ALL
SELECT [Property]
       ,[Pax]
       ,[Mth]
       ,'FY1819' as [ID]
FROM Table2
WHERE [Mth] between '2018-07-01' and '2019-06-01'
union all
SELECT 'EBC'
       ,0
       ,'2017-09-01'
       ,'FY1819'
union all
SELECT 'GHY'
       ,0
       ,'2017-10-01'
       ,'FY1819'

1
投票
SELECT [Property],
   [Pax],
   [Mth],
   'FY1718' AS [ID] FROM   Table1 WHERE  [Mth] BETWEEN '2017-07-01' AND '2018-06-01'
UNION ALL
SELECT [Property],
   [Pax],
   [Mth],
   'FY1819' AS [ID]
FROM   Table2
WHERE  [Mth] BETWEEN '2018-07-01' AND '2019-06-01'
UNION ALL       
SELECT *
FROM   (
       VALUES ('EBC', 0, '2017-09-01', 'FY1818'),
       ('GHY', 0, '2017-10-01', 'FY1818')
   ) DummyTable([Property], [Pax], [Mth], [ID])
© www.soinside.com 2019 - 2024. All rights reserved.