A(账号,姓名,金额)
B(账号,摘要,日期,操作员)
B表的摘要包括这样的信息:开户。销户。支取。存款等
现在我要选出这样的数据
应该怎么弄?账号 姓名 开户日,操作员,销户日,操作员别用UPDATE ,最好只用SELECT 或者选择视图之类的,希望能高效查询的一种方法NOTE:有些人开了户,但是并不代表,都销户了,只是部分人销户了而已
在线等
B(账号,摘要,日期,操作员)
B表的摘要包括这样的信息:开户。销户。支取。存款等
现在我要选出这样的数据
应该怎么弄?账号 姓名 开户日,操作员,销户日,操作员别用UPDATE ,最好只用SELECT 或者选择视图之类的,希望能高效查询的一种方法NOTE:有些人开了户,但是并不代表,都销户了,只是部分人销户了而已
在线等
解决方案 »
- 求sql,关于优化
- 怎么解决一台机安装MSSQL2000和2005时默认实例更改
- 提问:如何将WEB SERVER端的EXCEL,导入到数据库SERVER端?大家有什么好办法?
- 求彻底解决Q316333漏洞答案。
- Sysbase ASA 触发器改成SQL2000 凝问
- 怎样在用户定义函数里面获得当天的日期??
- 救助SQL如何实现
- 回答正确的给30分,如何在SQL中定义一个表的某列如(ID)值的类型象ACCESS中的自动编号呢?
- 数据库查询问题
- SQL 重复键的问题
- ASP和Access数据库出现一个查询的错误,请高手指点下!
- 存储过程中关于order by后Update(sql server 2005)
select
a.账号,a.姓名,
max(case b.摘要 when '开户' then b.日期' else '' end) as 开户日,
max(case b.摘要 when '开户' then b.操作员' else '' end) as 操作员,
max(case b.摘要 when '销户' then b.日期' else '' end) as 开户日,
max(case b.摘要 when '销户' then b.操作员' else '' end) as 操作员
from
a,b
where
a.账号=b.账号
group by
a.账号,a.姓名
a.账号,a.姓名,
max(case b.摘要 when '开户' then b.日期 else '' end) as 开户日,
max(case b.摘要 when '开户' then b.操作员' else '' end) as 操作员,
max(case b.摘要 when '销户' then b.日期' else '' end) as 开户日,
max(case b.摘要 when '销户' then b.操作员' else '' end) as 操作员
from
a,b
where
a.账号=b.账号
group by
a.账号,a.姓名
a.账号,a.姓名,
max(case b.摘要 when '开户' then b.日期 else '' end) as 开户日,
max(case b.摘要 when '开户' then b.操作员 else '' end) as 操作员,
max(case b.摘要 when '销户' then b.日期 else '' end) as 开户日,
max(case b.摘要 when '销户' then b.操作员 else '' end) as 操作员
from
a,b
where
a.账号=b.账号
group by
a.账号,a.姓名
select a.账号,a.姓名,
isnull(b.日期,'') 开户日, isnull(b.操作员,'') 操作员A,
isnull(c.日期,'') 销户日, isnull(c.操作员,'') 操作员B
from a
left join (select 账号,日期,操作员 from b where 摘要='开户') b ON a.账号=b.账号
left join (select 账号,日期,操作员 from b where 摘要='销户') c ON a.账号=c.账号
INSERT INTO @KQ1(empName, timeLen, recDate)
SELECT N'张三', 10, '2010-11-1' UNION ALL
SELECT N'张三', 10, '2010-11-2' UNION ALL
SELECT N'张三', 10, '2010-11-3' UNION ALL
SELECT N'张三', 10, '2010-11-4' UNION ALL
SELECT N'李四', 10, '2010-11-1' UNION ALL
SELECT N'李四', 10, '2010-11-2' UNION ALL
SELECT N'李四', 10, '2010-11-3' UNION ALL
SELECT N'李四', 10, '2010-11-4' UNION ALL
SELECT N'李四', 10, '2010-11-5' UNION ALL
SELECT N'王五', 20, '2010-11-1'--SELECT * FROM @KQ1 DECLARE @date_table TABLE(recDate DATETIME) --存放2010年11月1号-30号
DECLARE @dt DATETIME,
@i INTSELECT @dt = '2010-11-1', @i = 0
WHILE @i < 30
BEGIN
INSERT INTO @date_table(recDate)
VALUES(@dt)
SELECT @dt = DATEADD(dd, 1, @dt), @i = @i + 1
END
--SELECT * FROM @date_table
--empName, timeLen, recDate
WITH cte AS(
SELECT t1.empName, isnull(t2.timeLen,0) timeLen, t1.recDate
FROM (SELECT DISTINCT a.empName, b.recDate
FROM @KQ1 a
CROSS JOIN @date_table b) t1
LEFT JOIN @KQ1 t2
ON t1.empName=t2.empName AND t1.recDate=t2.recDate
)
SELECT * FROM cte
UNION
SELECT empName, SUM(timeLen) timeLen, NULL
FROM @KQ1
GROUP BY empName
ORDER BY empName, recDate
AIX系统里面能不能使用CASE WHEN ?