SQL 日期列中的额外数据
SQL Extra data in the date column
我有一个问题如下
Site_name LOB date
Site 1 Sales 6/1
Site 1 Sales 6/2
... .... ..
Site 2 Sales 6/1
Site 2 Sales 6/2
... .... ..
Site 3 Consumer 6/1
Site 3 Consumer 6/1
在数据中,我想要所有日期 MTD 和日期列中的额外两行。我希望它包含 'MTD' 和 'Target' 所以我得到的 table 看起来像这样
Site_name LOB date
Site 1 Sales 6/1
Site 1 Sales 6/2
... .... ..
Site 1 Sales Target
Site 1 Sales MTY
Site 2 Sales 6/1
Site 2 Sales 6/2
... .... ..
Site 2 Sales Target
Site 2 Sales MTY
Site 3 Consumer 6/1
Site 3 Consumer 6/1
... .... ...
Site 3 Consumer Target
Site 3 Consumer MTD
我对我现在拥有的东西的基本查询是,有些地方我认为在这里并不重要。
Select Distinct
Site_name, LOB, Day_date
where month(day_date)>=month(getdate()-5)
and year(day_date)=year(getdate())
不确定您是否想要这个,但它可能会给您一个想法。
至少,它产生的结果完全符合您的要求:
;WITH tData(Site,LOB) as (SELECT 'Site 1','Sales' UNION ALL SELECT 'Site 2','Sales' UNION ALL SELECT 'Site 3','Consumer' ),
tDate(sDate) as (SELECT CAST('2016-06-01' as Date) UNION ALL SELECT '2016-06-02'),
DateCol(sDate,sOrder) as (SELECT CAST(sDate as VARCHAR), 0 FROM tDate UNION ALL SELECT 'Target', 1 UNION ALL SELECT 'MTD', 2)
SELECT tData.*, sDate as [Date]
FROM tData, DateCol
ORDER BY Site, sOrder, sDate
Site LOB Date
Site 1 Sales 2016-06-01
Site 1 Sales 2016-06-02
Site 1 Sales Target
Site 1 Sales MTD
Site 2 Sales 2016-06-01
Site 2 Sales 2016-06-02
Site 2 Sales Target
Site 2 Sales MTD
Site 3 Consumer 2016-06-01
Site 3 Consumer 2016-06-02
Site 3 Consumer Target
Site 3 Consumer MTD
我有一个问题如下
Site_name LOB date
Site 1 Sales 6/1
Site 1 Sales 6/2
... .... ..
Site 2 Sales 6/1
Site 2 Sales 6/2
... .... ..
Site 3 Consumer 6/1
Site 3 Consumer 6/1
在数据中,我想要所有日期 MTD 和日期列中的额外两行。我希望它包含 'MTD' 和 'Target' 所以我得到的 table 看起来像这样
Site_name LOB date
Site 1 Sales 6/1
Site 1 Sales 6/2
... .... ..
Site 1 Sales Target
Site 1 Sales MTY
Site 2 Sales 6/1
Site 2 Sales 6/2
... .... ..
Site 2 Sales Target
Site 2 Sales MTY
Site 3 Consumer 6/1
Site 3 Consumer 6/1
... .... ...
Site 3 Consumer Target
Site 3 Consumer MTD
我对我现在拥有的东西的基本查询是,有些地方我认为在这里并不重要。
Select Distinct
Site_name, LOB, Day_date
where month(day_date)>=month(getdate()-5)
and year(day_date)=year(getdate())
不确定您是否想要这个,但它可能会给您一个想法。
至少,它产生的结果完全符合您的要求:
;WITH tData(Site,LOB) as (SELECT 'Site 1','Sales' UNION ALL SELECT 'Site 2','Sales' UNION ALL SELECT 'Site 3','Consumer' ),
tDate(sDate) as (SELECT CAST('2016-06-01' as Date) UNION ALL SELECT '2016-06-02'),
DateCol(sDate,sOrder) as (SELECT CAST(sDate as VARCHAR), 0 FROM tDate UNION ALL SELECT 'Target', 1 UNION ALL SELECT 'MTD', 2)
SELECT tData.*, sDate as [Date]
FROM tData, DateCol
ORDER BY Site, sOrder, sDate
Site LOB Date
Site 1 Sales 2016-06-01
Site 1 Sales 2016-06-02
Site 1 Sales Target
Site 1 Sales MTD
Site 2 Sales 2016-06-01
Site 2 Sales 2016-06-02
Site 2 Sales Target
Site 2 Sales MTD
Site 3 Consumer 2016-06-01
Site 3 Consumer 2016-06-02
Site 3 Consumer Target
Site 3 Consumer MTD