我有一个问题,因为我一直在使用这个查询没有问题......直到现在:
UPDATE T1
SET ORDINAL = DATEDIFF(DAY, T2.Opening_Date, T1.Date)
FROM FactTransactions T1
INNER JOIN DimStore T2 ON T1.cod_store = T2.cod_storeKey
Run Code Online (Sandbox Code Playgroud)
但现在它给了我一个错误:
从字符串转换日期和/或时间时转换失败
我不知道是怎么回事。以下是列:
Ordinal(numeric,null)
Opening_date(varchar, not null)
Date(varchar, not null)
cod_store(int,not null)
cod_storekey(PK,int, not null)
Run Code Online (Sandbox Code Playgroud) 我需要比较不同商店自开业以来每周和每月的交易次数。问题是这些商店的开业日期不同。
所以,这个想法是比较前几周或几个月的交易数量
这就是我所拥有的:
Canal Key 1
Recount FactTransactions
Month1-2015 Month2-2015 Month3-2015 Month4-2015 Month5-2015 Month6-2015
Type of store Cod Store
Spain
2 Store 1 5 6 10
Store 2 10 20 40 50 60 85
4
Store 3 31 45 100 315 441 625
Store 4 10 20 32 45
Portugal
1
Store 5 12
Run Code Online (Sandbox Code Playgroud)
这就是我想要获得的(比较自开业之日起的不同商店):
Canal Key 1
Recount FactTransactions
Month1 (or Week) Month2 Month3 Month4 Month5 Month6
Type of store Cod Store
Spain
2 Store 1 5 6 10 …Run Code Online (Sandbox Code Playgroud) 我在尝试创建 DimDate 时遇到问题。
这就是我尝试过的:
CREATE TABLE [dbo].[DimDate] (
/*[ID] [int] IDENTITY(1,1) NOT NULL--Use this line if you just want an autoincrementing counter AND COMMENT BELOW LINE*/
[ID] [VARCHAR](10) NOT NULL --TO MAKE THE ID THE YYYYMMDD FORMAT USE THIS LINE AND COMMENT ABOVE LINE.
,[Date] [DATETIME] NOT NULL
,[StandardDate] [VARCHAR](10) NULL
,[Day] [CHAR](2) NOT NULL
,[DaySuffix] [VARCHAR](4) NOT NULL
,[DayOfWeek] [VARCHAR](9) NOT NULL
,[DOWInMonth] [TINYINT] NOT NULL
,[DayOfYear] [INT] NOT NULL
,[WeekOfMonth] [TINYINT] NOT NULL
,[WeekOfYear] [TINYINT] NOT NULL
,[Month] …Run Code Online (Sandbox Code Playgroud) 我必须从位于另一个数据库中的另一个“table1”更新“table2”。位于另一个数据库中的“table1”每天更新为最后一天的事务。我只想用添加到“table1”中的新值更新“table2”。数据库位于同一台服务器中。
行不会从“table1”中删除,这是我想重放到“table2”中的事务的历史记录,因为“table2”(在同一服务器的另一个数据库中)将用于 SSAS,用于 BI。
我认为这需要一个程序。这是我尝试过的:
USE BDID_BI;
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE TransactionUpdate
AS
insert [BDID_BI].[dbo].[Transaction] *
SELECT *
FROM [BDID].[dbo].[hl_transaction] as B
WHERE ( SELECT * FROM [BDID_BI].[dbo].[Transaction]
WHERE date < B.date);
GO
Run Code Online (Sandbox Code Playgroud)
这将是一个日常过程,所以我不必插入之前插入的值,我只需更新添加到“table1”中的新值。