Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Create View with Declare?  [new]
unkis
Member

Откуда:
Сообщений: 183
Ребята есть некий selcet, к результату которго нажо будет постоянно оброщаться, поэтому я решил сделать View, но View не хочет работать с Declare.

Как решить этупроблему?

вот так выглядет мой запрос

declare @kauft int
declare @nichtkauft int
declare @size float;
declare @kauft_prozent float
declare @katalogId int

set @katalogId = 1592215
set @kauft_prozent = 4.8
set @size = 100

set @kauft = ROUND(((@size*@kauft_prozent)/100),0)
set @nichtkauft = @size-@kauft


select k.KundenID,k.KatalogID,k.Katalogversandaktion, k.GeschlechtID, k.AltergruppeID,k.DauerSaisons,k.DauerSaisonsDiskret,k.DauerSaisonsInaktiv,k.AnzahlBestellungen4J,k.SumUmsatz4J,k.SumUmsatz4JDiskret,k.SumUmsatz4JDiskret2,k.Retour4J,k.Retour4JDiskret,k.W_Kauf,k.W_UmsatzRealisiert,k.W_UmsatzRealisiertDiskret_neg, k.W_UmsatzRealisiertDiskret_pos,
k.W_Retour, k.W_RetourDiskret,SUBSTRING( ka.Rech_PLZ,1,1) as Rech_PLZ
from (
select top(@kauft) *
from DWH_Katalogresponse_Live.dbo.F_RFM_Kunde_1592215_is_not_keine k1
where k1.KatalogID =  @katalogId and k1.W_Kauf = 1
union
select top(@nichtkauft) *
from DWH_Katalogresponse_Live.dbo.F_RFM_Kunde_1592215_is_not_keine k2
where k2.KatalogID =  @katalogId and k2.W_Kauf = 0
) k, DWH_Katalogresponse_Live.dbo.I_CRM_Kunden_Adressen ka 
where KatalogID = 1592215 and k.KundenID = ka.KundenID
4 авг 09, 22:18    [7497984]     Ответить | Цитировать Сообщить модератору
 Re: Create View with Declare?  [new]
Crimean
Member

Откуда:
Сообщений: 13147
табличная UDF?
4 авг 09, 22:53    [7498030]     Ответить | Цитировать Сообщить модератору
 Re: Create View with Declare?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Запихал во вьюшку:
CREATE VIEW [dbo].[SomeDullardView] AS
SELECT	 T.KundenID
	,T.KatalogID
	,T.Katalogversandaktion
	,T.GeschlechtID
	,T.AltergruppeID
	,T.DauerSaisons
	,T.DauerSaisonsDiskret
	,T.DauerSaisonsInaktiv
	,T.AnzahlBestellungen4J
	,T.SumUmsatz4J
	,T.SumUmsatz4JDiskret
	,T.SumUmsatz4JDiskret2
	,T.Retour4J
	,T.Retour4JDiskret
	,T.W_Kauf
	,T.W_UmsatzRealisiert
	,T.W_UmsatzRealisiertDiskret_neg
	,T.W_UmsatzRealisiertDiskret_pos
	,T.W_Retour
	,T.W_RetourDiskret
	,T.Rech_PLZ
FROM	(	SELECT	 1592215			AS katalogId
			,Convert(Decimal(6,3),4.8)	AS kauft_prozent	-- Float в (|)
			,Convert(Decimal(6,3),100)	AS [size]
	) Const		CROSS APPLY (
		SELECT	 Round(Const.[size] * Const.kauft_prozent / 100,0)	AS Val
	) kauft		CROSS APPLY (
		SELECT	 Const.[size] - kauft.Val				AS Val
	) nichtkauft	CROSS APPLY (
		SELECT	 K.*
			,SubString(A.Rech_PLZ,1,1)					AS Rech_PLZ
			,Row_Number()OVER(PARTITION BY K.W_Kauf ORDER BY (SELECT NULL))	AS Number
		FROM	     DWH_Katalogresponse_Live.dbo.F_RFM_Kunde_1592215_is_not_keine	K
			JOIN DWH_Katalogresponse_Live.dbo.I_CRM_Kunden_Adressen			A ON A.KundenID = K.KundenID
		WHERE	    K.KatalogID = Const.katalogId
			AND K.KatalogID = 1592215
	) T
WHERE	   W_Kauf = 1 AND Number <=      kauft.Val
	OR W_Kauf = 0 AND Number <= nichtkauft.Val
Какой вопрос, такой ответ.
Надо хоть базово понимать, что такое вью, функции, соединения (JOIN), различия типов данных и т.п.
5 авг 09, 03:50    [7498217]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Create View with Declare?  [new]
Владимир Маньков
Member

Откуда:
Сообщений: 16
Привет всем!
Помогите пожалуйста в размещением во вьюхе кода, ругается на Declare
Declare @Date datetime
Set @Date = GetDate()

SELECT dbo.event_db.Event_id,
dbo.event_db.Event_Date,
dbo.event_db.Event_Them,
dbo.event_db.lib_Msrok,
dbo.event_lib_srok.lib_NameofSrok,
dbo.event_db.L_PJ_ID,
dbo.event_lib_projetcs.PJ_name,
dbo.event_lib_projetcs.L_USER_PJID,
dbo.event_lib_projetcs.PJ_fullname,
dbo.event_lib_projetcs.PJ_impotent_key,
dbo.event_db.L_PROS_ID,
dbo.event_lib_pros.L_PROSName,
dbo.event_db.Event_state_complet,
dbo.event_db.Event_Create,
dbo.event_db.Date_closed,
dbo.event_db.DepenID,
dbo.event_db.Event_Description,
CASE WHEN (CAST((dbo.event_db.Event_Date - GETDATE()) AS numeric) >= 0 AND
CAST((dbo.event_db.Event_Date - GETDATE()) AS numeric) <= dbo.event_lib_srok.lib_Msrok) THEN 1 ELSE 0 END AS Status,
CAST(dbo.event_db.Event_Date - (dateadd(day, datediff(day, cast(0 as datetime), @Date), 0)) AS int) AS nd,
dbo.event_lib_users.User_position,
dbo.event_lib_users.L_VisioName,
1 AS Count_Event
FROM dbo.event_lib_pros INNER JOIN
dbo.event_db INNER JOIN
dbo.event_lib_srok ON dbo.event_db.lib_Msrok = dbo.event_lib_srok.lib_Msrok INNER JOIN
dbo.event_lib_projetcs ON dbo.event_db.L_PJ_ID = dbo.event_lib_projetcs.L_PJ_ID ON dbo.event_lib_pros.L_PROS_ID = dbo.event_db.L_PROS_ID INNER JOIN
dbo.event_lib_users ON dbo.event_db.L_USER_ID = dbo.event_lib_users.L_USER_ID
14 мар 14, 15:37    [15724920]     Ответить | Цитировать Сообщить модератору
 Re: Create View with Declare?  [new]
_human
Member

Откуда:
Сообщений: 569
Владимир Маньков,

Crimean
табличная UDF?
14 мар 14, 15:46    [15725021]     Ответить | Цитировать Сообщить модератору
 Re: Create View with Declare?  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3752
_human
Владимир Маньков,

Crimean
табличная UDF?

нафик. просто @date зхаменить на getdate() и declare весь выкинуть
14 мар 14, 16:35    [15725527]     Ответить | Цитировать Сообщить модератору
 Re: Create View with Declare?  [new]
Владимир Маньков
Member

Откуда:
Сообщений: 16
Ivan Durak,

Здравствуйте, спасибо!

я решил немного по другому
SELECT dbo.event_db.Event_id, dbo.event_db.Event_Date, dbo.event_db.Event_Them, dbo.event_db.lib_Msrok, dbo.event_lib_srok.lib_NameofSrok, dbo.event_db.L_PJ_ID,
dbo.event_lib_projetcs.PJ_name, dbo.event_lib_projetcs.L_USER_PJID, dbo.event_lib_projetcs.PJ_fullname, dbo.event_lib_projetcs.PJ_impotent_key,
dbo.event_db.L_PROS_ID, dbo.event_lib_pros.L_PROSName, dbo.event_db.Event_state_complet, dbo.event_db.Event_Create, dbo.event_db.Date_closed,
dbo.event_db.DepenID, dbo.event_db.Event_Description, CASE WHEN (CAST((dbo.event_db.Event_Date - GETDATE()) AS numeric) >= 0 AND
CAST((dbo.event_db.Event_Date - GETDATE()) AS numeric) <= dbo.event_lib_srok.lib_Msrok) THEN 1 ELSE 0 END AS Status,
CAST(dbo.event_db.Event_Date - CAST(CONVERT(nvarchar(10), GETDATE(), 20) AS datetime) AS int) AS nd, dbo.event_lib_users.User_position,
dbo.event_lib_users.L_VisioName, 1 AS Count_Event
FROM dbo.event_lib_pros INNER JOIN
dbo.event_db INNER JOIN
dbo.event_lib_srok ON dbo.event_db.lib_Msrok = dbo.event_lib_srok.lib_Msrok INNER JOIN
dbo.event_lib_projetcs ON dbo.event_db.L_PJ_ID = dbo.event_lib_projetcs.L_PJ_ID ON dbo.event_lib_pros.L_PROS_ID = dbo.event_db.L_PROS_ID INNER JOIN
dbo.event_lib_users ON dbo.event_db.L_USER_ID = dbo.event_lib_users.L_USER_ID
17 мар 14, 07:07    [15735718]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить