3
Answers

What is different between where and Having clauses

Satya Prakash

Satya Prakash

12y
2.9k
1
describe in detail about where and having clause and also differentiate it.
Answers (3)
1
Tahir Ansari

Tahir Ansari

255 7.5k 224.3k 1y
DECLARE @BeginDate datetime = '2023-09-28';
DECLARE @from datetime;
DECLARE @to datetime;
DECLARE @Include BIT = 1;

SET @from = DATEADD(dd, DATEDIFF(dd, 0, @BeginDate), 0);
SET @to = DATEADD(dd, DATEDIFF(dd, -1, @BeginDate), 0);

IF OBJECT_ID('tempdb..#results') IS NOT NULL DROP TABLE #results;

CREATE TABLE #results
(
  [BPID] [nvarchar](32) NOT NULL,
  [DId] [bigint] NULL,
  [Number] [nvarchar](32) NULL,
  [Account] [nvarchar](32) NULL,
  [LineOfBusinessDesc] [nvarchar](4) NULL,
  [LineOfBusiness] [varchar](35) NULL,
  [Channel] [varchar](35) NULL,
  [ProductLine] [varchar](35) NULL,
  [BusinessSegment] [varchar](35) NULL,
  [LineOfBusinessType] [varchar](35) NULL
);

INSERT INTO #results
SELECT [PID]
    ,[DId]
    ,[Number]
    ,[Account]
    ,NULL
    ,NULL
    ,NULL
    ,NULL
    ,NULL
FROM dbo.DailyDataInfo
WHERE CreatedDate >= @from AND CreatedDate < @to;

IF @Include = 1
BEGIN
    INSERT INTO #results
    SELECT a.[PID]
        ,[DId]
        ,a.[Number]
        ,a.[Account]
        ,a.[LineOfBusiness]
        ,b.[LineOfBusiness]
        ,b.[Channel]
        ,b.[ProductLine]
        ,b.[BusinessSegment]
    FROM dbo.OtherDailyData a
    OUTER APPLY
    (
        SELECT TOP 1
            Id,
            x.Data.value('(//Data/Company/LineOfBusiness)[1]', 'varchar(30)') as LineOfBusiness,
            x.Data.value('(//Data/Company/Channel)[1]', 'varchar(30)') as Channel,
            x.Data.value('(//Data/Company/ProductLine)[1]', 'varchar(25)') as ProductLine,
            x.Data.value('(//Data/Company/BusinessSegment)[1]', 'varchar(25)') as BusinessSegment
        FROM dbo.TermData x
        WHERE x.Reference = a.Number
        ORDER BY x.Id DESC
    ) b
    WHERE CreatedDate >= @from AND CreatedDate < @to;
END;

-- Select only the necessary columns
SELECT [BPID], [DId], [Number], [Account], [LineOfBusinessDesc], [LineOfBusiness], [Channel], [ProductLine], [BusinessSegment], [LineOfBusinessType] FROM #results;