SQL
SERVER数据库是没有DECODE语法的。
使用通用的case
when语法就可以,就是按照条件来取不同的值的语法。
当类型是退料,那么就取相反数,否则取数量本身。
case
when
语法
case
类型
when
'退料'
then
0
-
数量
else
数量
end
或者
case
when
类型
=
'退料'
then
0
-
数量
else
数量
end
不知道你说的放到一个报表中,指的是不是显示在同一行。
select
物料,
sum(case
类型
when
'退料'
then
0
-
数量
else
0
end)
as
退料总数,
sum(case
类型
when
'领料'
then
数量
else
0
end)
as
领料总数
from
领退料表
group
by
物料
这个查询可以按物料分组,显示每个物料的总领料,总退料信息。你所说的放到一个报表中是不是这样的?
SQL Server的对象命名完整格式如下:
ServerDatabaseDatabaseSchemaDatabaseObject
服务器名数据库名架构名表名
使用同一个SQL Server(集群)服务器下的数据库,可以省略服务器名。(即不跨SQL Server(集群)服务器引用数据库的话,可以默认不写服务器名;不写服务器名默认使用的是已连接的本地SQL Server(集群)服务器里的数据库)
又因为在同一个SQL Server(集群)服务器中相同的表名只能出现在不同的架构中,即不会出现不同数据库,但同架构名表名的情况。所以在同一个SQL Server(集群)服务器中数据库名是可以省略不写的,因为架构名表名的格式就已经具有唯一性了。
什么数据库? 如果是 Oracle 的话, 那是相当简单。
LTRIM 函数, 处理一下就可以了
可以去除空格或者指定字符
或者指定字符集合
SQL> SELECT LTRIM(' Ora ') A,
2 LTRIM('Ora', '') B,
3 LTRIM('zyxOraxyz', 'xyz') C
4 FROM
5 dual;
A B C
------------ ------------ ------------
Ora Ora Oraxyz
SQL Server 数据库的 LTRIM 就 只能去除空格了
所以写起来就复杂一点了。
UPDATE表
SET
列名 = SUBSTRING( 列名, 2, LENGTH(列名) - 1)
WHERE
LENGTH(列名) > 1
AND LEFT(列名, 1) = '0'
如果有那种 0001234 的数据,那么上面的语句, 需要执行多次。
declare @c as decimal(6,2)
set @c=010
select @c 数字,cast(@c as varchar(20)) 字符
其实从上图中可以看出,SQL输出的结果是没有错的,很可能是程序将其小数点前面的0省略掉了。
以上就是关于ERP数据库,后台为SQL。请问用什么语句能把满足某一条的值在一份报表中正数显示为负数全部的内容,包括:ERP数据库,后台为SQL。请问用什么语句能把满足某一条的值在一份报表中正数显示为负数、为什么可以省略服务器名和数据库名、SQL数据库中出现了首位带0与不带0的重复选项,很多,该如何修复等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)