完全披露,我正在学习,我已经在互联网上搜索,我只是无法弄清楚我的问题.
我正在进行在线课程,并给出了以下示例:
select
DATENAME(MONTH, DATEADD(MONTH, MONTH(OrderDate), -1)) AS 'Month',
SUM(CASE WHEN YEAR(OrderDate) = 2005 THEN 1 ELSE 0 END) AS Orders,
SUM(CASE YEAR(OrderDate) WHEN 2005 THEN Totaldue ELSE 0 END) AS 'Total Value'
from
sales.salesorderheader
group by Month(orderdate)
order by Month(orderdate) ASC
Run Code Online (Sandbox Code Playgroud)
返回以下结果:
我明白了(我想)所以我开始搞乱代码以进一步理解Case语句.查看代码我认为Orders字段基本上是在一个月内查找所有订单,为每个订单分配1,然后将它们全部添加.因为每个人都分配了1我认为我可以将SUM更改为COUNT,我会得到相同的结果.
但是,这段代码:
select
DATENAME(MONTH, DATEADD(MONTH, MONTH(OrderDate), -1)) AS 'Month',
COUNT(CASE WHEN YEAR(OrderDate) = 2005 THEN 1 ELSE 0 END) AS Orders,
SUM(CASE YEAR(OrderDate) WHEN 2005 THEN Totaldue ELSE 0 END) AS 'Total Value'
from
sales.salesorderheader
group by …Run Code Online (Sandbox Code Playgroud) 有人可以告诉我,以下施工有什么问题?:
CASE @CountryID
WHEN 1 THEN SET @String = REPLACE(@String,'+420','')
WHEN 2 THEN SET @String = REPLACE(@String,'+421','')
WHEN 3 THEN SET @String = REPLACE(@String,'+359','')
WHEN 4 THEN SET @String = REPLACE(@String,'+7','')
WHEN 5 THEN SET @String = REPLACE(@String,'+48','')
WHEN 7 THEN SET @String = REPLACE(@String,'+63','')
END
Run Code Online (Sandbox Code Playgroud)
@CountryID是INT.
问题出现在CASE声明构造中,因为IF语句运行良好,但我看不到任何故障,尝试了不同类型的案例构建并搜索了文档.
任何提示都会很感激.
我想知道是否有一种方法可以使用SQL中的替换函数来专门查找百分比?
比如说我有数据:
我不想仅在结果中替换百分比中的其他数字.
我目前有没有办法做到这一点:
UPDATE DataTable SET PersonInfo = replace(PersonInfo, '%', '' );
Run Code Online (Sandbox Code Playgroud)
但我不知道如何选择与百分比相关的数据(数字)......
期望的输出:
有没有更好的方法来做这个或这个代码好吗?
DECLARE @Test DECIMAL(18,2) = NULL
, @Test1 DECIMAL(18,2) = '5'
SELECT ISNULL(@Test,(ISNULL(@Test1,'0')))
Run Code Online (Sandbox Code Playgroud)
谢谢,EB
有时SQL Server会给我这样的随机错误.我不喜欢SQL,但我很确定这段代码没有错...
"订单"附近的语法不正确
CREATE TABLE Order
(
OrderNumber INTEGER PRIMARY KEY,
OrderDate DATE,
CustomerNumber INTEGER,
CustomerPONumber INTEGER,
OrderTotal FLOAT,
OrderStatus VARCHAR(10),
OrderSpecialCharges FLOAT,
OrderSpecialChargeDescription VARCHAR(50),
ShipName VARCHAR (20),
ShipAddress1 VARCHAR (10),
ShipAddress2 VARCHAR (10),
ShipCity VARCHAR (10),
ShipState CHAR (2),
ShipZip INTEGER,
FOREIGN KEY (CustomerNumber) REFERENCES Customer
);
Run Code Online (Sandbox Code Playgroud) 我有这个问题,我想在整数和字符串之间创建一个唯一的索引,但它给了我以下问题.我怎样才能完成这项工作?为什么不允许这样做?因为我实际上真的想要这个独特的组合,以确保数据库中没有存储双标签.
表'dbo.HostingReportGroups'中的列'Label'的类型无效,无法用作索引中的键列.
我用于此的模型如下:
public class HostingReportGroup
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Index("UniqueCustomerAndLabel", 1, IsUnique = true)]
public int CustomerId { get; set; }
[Index("UniqueCustomerAndLabel", 2, IsUnique = true)]
public string Label { get; set; }
public virtual ICollection<HostingReportGroupList> HostingReportGroupLists { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试执行的迁移包含以下代码:
public partial class adding_unique_key_to_hosting_report_group : DbMigration
{
public override void Up()
{
CreateIndex("dbo.HostingReportGroups", new[] { "CustomerId", "Label" }, unique: true, name: "UniqueCustomerAndLabel");
}
public override void Down()
{
DropIndex("dbo.HostingReportGroups", "UniqueCustomerAndLabel"); …Run Code Online (Sandbox Code Playgroud) 我想用ddl触发器(在放置之前)创建一个备份表,并遇到以下问题.
发生第一次丢弃时没关系:a_backup表包含丢弃表的数据.但为什么我不能放弃另一张桌子?
ORA-01031:权限不足
create table b (x number);
Run Code Online (Sandbox Code Playgroud)
- 表B已创建.
create table a (x number);
Run Code Online (Sandbox Code Playgroud)
- 表A已创建.
create table a_backup as select * from a where 1 = 0;
Run Code Online (Sandbox Code Playgroud)
- 表A_BACKUP已创建.
create or replace trigger a_backup_tr
before drop
on database
begin
IF ora_dict_obj_name <> 'A' then
null;
ELSIF ora_dict_obj_name = 'A'
and ora_dict_obj_owner = 'TRANEE' then
insert into a_backup
select * from a;
ELSE null;
end if;
end;
/
Run Code Online (Sandbox Code Playgroud)
- 触发A_BACKUP_TR编译
-- 1
drop table a;
Run Code Online (Sandbox Code Playgroud)
- 表A下降.
-- 2 …Run Code Online (Sandbox Code Playgroud) 我正在尝试理解SQL Server中的嵌套事务.让我们考虑以下SQL命令链:
BEGIN TRANSACTION; -- #1
BEGIN TRANSACTION; -- #2
UPDATE foo SET column = 'something'; -- Change something in one table.
COMMIT TRANSACTION; -- #2
Run Code Online (Sandbox Code Playgroud)
如果事务#2的提交成功,那么事务#1的提交可能会失败吗?如果是的话,你可以提供一个可能发生这种情况的例子吗?
在我的存储过程中,我运行像soi这样的查询:
SELECT NETWORKOWNER.BUS_SEQ.NEXTVAL@LEGACYSMITH.WORLD
FROM TBLDECIDERCONTRACT@LEGACYSMITH.WORLD
WHER PROVID = 28938
Run Code Online (Sandbox Code Playgroud)
如何仅获得一个 NEXTVAL结果?
说我有两张桌子
CREATE TABLE Employees (
Employee_ID number(8),
Employee_Name varchar2(100) NOT NULL,
CONSTRAINT pk_EmployeeID PRIMARY KEY(Employee_ID));
CREATE TABLE Drivers(
Driver_ID number(8) NOT NULL,
Employee_ID number(8) NOT NULL,
CONSTRAINT pk_DriverID PRIMARY KEY (Driver_ID),
CONSTRAINT fk_EmployeeDataTwo FOREIGN KEY (Employee_ID) REFERENCES Employees(Employee_ID));
Run Code Online (Sandbox Code Playgroud)
如何使用查询来使用驱动程序中的外键来检查员工列表中的名称?例如
select employee_name
from employees
inner join drivers on employees.employee_name = drivers.employee_name;
Run Code Online (Sandbox Code Playgroud)
哪个不起作用
sql-server ×6
sql ×5
t-sql ×5
oracle ×3
plsql ×2
c# ×1
case ×1
ddl-trigger ×1
isnull ×1
percentage ×1
replace ×1
transactions ×1
triggers ×1