我写了一个行专列的sql 语句,调试没有问题:SELECT kp_id ,kp_hth, MAX(CASE 分组序号 WHEN 1 THEN rtrim(kp_hm) ELSE '0' END) AS 第1次开票号码 ,
MAX(CASE 分组序号 WHEN 1 THEN kp_je ELSE '0' END) AS 第1次开票单位,MAX(CASE 分组序号 WHEN 2 THEN rtrim(kp_hm) ELSE '0' END)
AS 第2次开票号码 , MAX(CASE 分组序号 WHEN 2 THEN kp_je ELSE '0' END) AS 第2次开票单位,
1 from oinv_ID where (kp_rq between '2000-01-01' and '2010-12-31') GROUP BY kp_id,kp_hth但是我把他作为嵌套查询后SELECT distinct t0.docnum , T0.NumAtCard as 合同号, T0.DocTotal as 合同总金额 ,
t0.docdate as 合同签订日期 ,T0.PaidSum as 已经支付, T0.CardCode as 客户代码, T0.CardName as 客户名称 ,
t3.name as 片区 , b.开票总金额 ,第2次开票号码
FROM OINV T0 inner JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry inner join [dbo].[@PQB] t3
on T0.U_pq = T3.Code left outer join
(select isnull(cast(sum(kp_je)as money),0) as 开票总金额 ,t.kp_id , t.kp_hth from( select * from oinv_kp where kp_rq between '2000-01-01' and '2010-12-31' )t group by t.kp_id,t.kp_hth) b on t0.docentry=b.kp_id
left outer join
( SELECT kp_id ,kp_hth, MAX(CASE 分组序号 WHEN 1 THEN rtrim(kp_hm) ELSE '0' END) AS 第1次开票号码 ,
MAX(CASE 分组序号 WHEN 1 THEN kp_je ELSE '0' END) AS 第1次开票单位,MAX(CASE 分组序号 WHEN 2 THEN rtrim(kp_hm) ELSE '0' END) AS 第2次开票号码 , MAX(CASE 分组序号 WHEN 2 THEN kp_je ELSE '0' END) AS 第2次开票单位,
1 from oinv_ID where (kp_rq between '2000-01-01' and '2010-12-31') GROUP BY kp_id,kp_hth) k
on k.kp_id=t0.docentry where (T0.NumAtCard <>N'作废' and b.开票总金额<0) or (T0.NumAtCard <>N'作废' and b.开票总金额>0)or
(t0.numatcard is null and b.开票总金额>0)or(t0.numatcard is null and b.开票总金额<0)order by b.开票总金额 desc就会提示 没有为第 7 列(属于 'k')指定列 摆渡了下说是没有为列名指定名称,但是我已经用as指定了,奇怪,求高手帮忙!
MAX(CASE 分组序号 WHEN 1 THEN kp_je ELSE '0' END) AS 第1次开票单位,MAX(CASE 分组序号 WHEN 2 THEN rtrim(kp_hm) ELSE '0' END)
AS 第2次开票号码 , MAX(CASE 分组序号 WHEN 2 THEN kp_je ELSE '0' END) AS 第2次开票单位,
1 from oinv_ID where (kp_rq between '2000-01-01' and '2010-12-31') GROUP BY kp_id,kp_hth但是我把他作为嵌套查询后SELECT distinct t0.docnum , T0.NumAtCard as 合同号, T0.DocTotal as 合同总金额 ,
t0.docdate as 合同签订日期 ,T0.PaidSum as 已经支付, T0.CardCode as 客户代码, T0.CardName as 客户名称 ,
t3.name as 片区 , b.开票总金额 ,第2次开票号码
FROM OINV T0 inner JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry inner join [dbo].[@PQB] t3
on T0.U_pq = T3.Code left outer join
(select isnull(cast(sum(kp_je)as money),0) as 开票总金额 ,t.kp_id , t.kp_hth from( select * from oinv_kp where kp_rq between '2000-01-01' and '2010-12-31' )t group by t.kp_id,t.kp_hth) b on t0.docentry=b.kp_id
left outer join
( SELECT kp_id ,kp_hth, MAX(CASE 分组序号 WHEN 1 THEN rtrim(kp_hm) ELSE '0' END) AS 第1次开票号码 ,
MAX(CASE 分组序号 WHEN 1 THEN kp_je ELSE '0' END) AS 第1次开票单位,MAX(CASE 分组序号 WHEN 2 THEN rtrim(kp_hm) ELSE '0' END) AS 第2次开票号码 , MAX(CASE 分组序号 WHEN 2 THEN kp_je ELSE '0' END) AS 第2次开票单位,
1 from oinv_ID where (kp_rq between '2000-01-01' and '2010-12-31') GROUP BY kp_id,kp_hth) k
on k.kp_id=t0.docentry where (T0.NumAtCard <>N'作废' and b.开票总金额<0) or (T0.NumAtCard <>N'作废' and b.开票总金额>0)or
(t0.numatcard is null and b.开票总金额>0)or(t0.numatcard is null and b.开票总金额<0)order by b.开票总金额 desc就会提示 没有为第 7 列(属于 'k')指定列 摆渡了下说是没有为列名指定名称,但是我已经用as指定了,奇怪,求高手帮忙!
解决方案 »
- 大家帮帮我啊,这个SQL语句怎么写啊
- 关于全局变量,显示事物,索引的3个弱弱的问题!!望高手解惑
- 请问如何取出除去第一列外的所有字段
- 关于一个多表等值连接查询的问题
- sql server的数据能自动备份?
- SQL Server2005做的软件如何安装成单机版
- sqlserver2000 Connection refused: connect问题
- 请大家给出个题目吧!分数不是问题!小弟就要面试了!回复越多越好!
- 在存储过程中可递归调用自定义函数吗?如何实现?
- help:数据库为8.1.6,client 端sqlplus 为3.3.2.0.2,连接的时候提示:错误:ORA-03106: 致命的双任务通信协议错,请各位大虾帮助
- 找个Sql数据库高手帮忙把sql2000做的数据库翻写成sql2005编写的!
- 没有为第 1 列(属于 'A')指定列。怎么修改了
MAX(CASE 分组序号 WHEN 1 THEN kp_je ELSE '0' END) AS 第1次开票单位,MAX(CASE 分组序号 WHEN 2 THEN rtrim(kp_hm) ELSE '0' END) AS 第2次开票号码 , MAX(CASE 分组序号 WHEN 2 THEN kp_je ELSE '0' END) AS 第2次开票单位,
1 from oinv_ID where (kp_rq between '2000-01-01' and '2010-12-31') GROUP BY kp_id,kp_hth) k
on k.kp_id=t0.docentry 红色部分去掉
1 from... --红色处的1没有列名
顺便再问下,,,我那个行专列语句是个动态的sql语句,我用存储过程的exec(@sql)输出的,所以字段名也是动态的,,
如上我要把行专列的字段名称也显示到下面语句:
SELECT distinct t0.docnum , T0.NumAtCard as 合同号, T0.DocTotal as 合同总金额 ,
t0.docdate as 合同签订日期 ,T0.PaidSum as 已经支付, T0.CardCode as 客户代码, T0.CardName as 客户名称 ,t3.name as 片区 , b.开票总金额 ,第2次开票号码 .......怎么做?也只能用动态的sql语句输出?
不过你第一条语句
AS 第2次开票号码 , MAX(CASE 分组序号 WHEN 2 THEN kp_je ELSE '0' END) AS 第2次开票单位,
1 from oinv_ID where (kp_rq between '2000-01-01' and '2010-12-31') GROUP BY kp_id,kp_hth
就含有1.