数据补齐

qch2015qch 2018-05-08 05:05:24
有2张表
DECLARE @T1 TABLE (NAME VARCHAR(20), DATE datetime, VALUE VARCHAR(10))
DECLARE @T2 TABLE (date datetime)

INSERT INTO @T1 VALUES('A', '2018-1-1', 'V')
INSERT INTO @T1 VALUES('A', '2018-1-2', 'V')
INSERT INTO @T1 VALUES('B', '2018-1-1', 'V')
INSERT INTO @T1 VALUES('C', '2018-1-1', 'V')

INSERT INTO @T2 VALUES('2018-1-1')
INSERT INTO @T2 VALUES('2018-1-2')
INSERT INTO @T2 VALUES('2018-1-3')

期望的结果是
-----------
A, 'V', '2018-1-1'
A, 'V', '2018-1-2'
A, NULL, '2018-1-3'
B, 'V', '2018-1-1'
B, NULL, '2018-1-2'
B, NULL, '2018-1-3'
C, 'V', '2018-1-1'
C, NULL, '2018-1-2'
C, NULL, '2018-1-3'
求解答~
...全文
347 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
RINK_1 2018-05-08
  • 打赏
  • 举报
回复

DECLARE @T1 TABLE (NAME VARCHAR(20), DATE datetime, VALUE VARCHAR(10))
DECLARE @T2 TABLE (date datetime)

INSERT INTO @T1 VALUES('A', '2018-1-1', 'V')
INSERT INTO @T1 VALUES('A', '2018-1-2', 'V')
INSERT INTO @T1 VALUES('B', '2018-1-1', 'V')
INSERT INTO @T1 VALUES('C', '2018-1-1', 'V')

INSERT INTO @T2 VALUES('2018-1-1')
INSERT INTO @T2 VALUES('2018-1-2')
INSERT INTO @T2 VALUES('2018-1-3')

SELECT A.NAME,A.date,B.VALUE FROM
(SELECT *
FROM
(SELECT DISTINCT NAME from @T1) AS A
JOIN @T2 B ON 1=1) AS A
LEFT JOIN @T1 B ON A.date=B.date AND A.NAME=B.NAME
zbdzjx 2018-05-08
  • 打赏
  • 举报
回复
with t1(NAME, DATE , VALUE) as
(
  select 'A', '2018-1-1', 'V' union all
  select 'A', '2018-1-2', 'V' union all
  select 'B', '2018-1-1', 'V' union all
  select 'C', '2018-1-1', 'V'
)
, t2(date) as
(
  select '2018-1-1' union all
  select '2018-1-2' union all
  select '2018-1-3'
)
select a.NAME, b.VALUE, a.date from 
(select distinct t1.NAME, t2.date from t1, t2) a
left join t1 b on a.NAME=b.NAME and a.date=b.DATE
在路上_- 2018-05-08
  • 打赏
  • 举报
回复
select distinct a.name, b.date from @T1 a cross join @T2 b

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧