SQL Server: Si @variable est null set @variable = x
Je suis à l'aide de SQL Server. Je veux donc, si @variable est null, il est réglé à une certaine valeur.
set nocount on
IF object_id('tempdb..##tmp') IS NOT NULL
BEGIN
DROP TABLE ##tmp
END
CREATE TABLE ##tmp (week varchar (25), users int, stamps int)
declare @inter varchar(100)
declare @qt_users int
declare @qt_stamps int
declare @comando varchar(5000)
declare @start date = null
declare @end date = null
declare @week datetime = DATEADD(DAY, 6, @start)
--if @start is null, set it to a value:
if (null!=@start)
begin
set @start = '20130101'
end
if (null!=@end)
begin
set @end = GETDATE()
end
while @start < @end
begin
select @qt_users = COUNT(distinct id_user)
from stamps
where dt_synchronization between @start and @week
select @qt_stamps = COUNT(id_stamp)
from stamps
where dt_synchronization between @start and @week
set @inter = convert(varchar(10),@start,105) + ' até ' +
convert(varchar(10),@week,105)
set @comando = 'insert into ##tmp(week, users, stamps) values (''' +
@inter + ''','''+
cast(@qt_users as varchar) +
''',''' + cast(@qt_stamps as varchar) + ''')'
exec (@comando)
set @start = @week + 1
set @week = dateadd(day, 6, @start)
end
select week, users, stamps from ##tmp
SQL Server? Oracle? MySQL...
OriginalL'auteur user2191922 | 2013-03-20
Vous devez vous connecter pour publier un commentaire.
Utilisation EST NULLE pour vérifier au lieu de cela, par exemple:
Ou, en une seule ligne:
Mise à jour:
Aussi, vous êtes paramètre @semaine trop tôt:
changement:
Sur une note de côté, également en valeur la refactorisation de votre boucle pour définir l'approche fondée sur les performances. Un pointage/table de nombres type d'approche est une option de recherche.
OriginalL'auteur AdaTheDev