Using IF in SQL Function with 2 Table - sql

I have a page like this
Baş Tar. --> Start Date
Bit. Tar --> End Date
I have a SQL like this for this page,
SELECT B.HESAP_NO, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2 AS 'TEKLIF',B.MUS_K_ISIM,
dbo.fngcodeme(B.HESAP_NO, B.DOVIZ_KOD, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2,'01/01/2011', '11/03/2011') AS 'YATAN',
(CASE WHEN B.DOVIZ_KOD = 21 THEN 'EUR' WHEN B.DOVIZ_KOD = 2 THEN 'USD' WHEN B.DOVIZ_KOD = 1 THEN 'TL' END) AS 'KUR',
D.AVUKAT,
(CASE WHEN D.HESAP IN (SELECT T_HESAP_NO FROM TAKIP) THEN
(SELECT CONVERT(VARCHAR(10),ICRA_TAR,103) FROM TAKIP WHERE T_HESAP_NO = D.HESAP)
ELSE ' ' END) AS 'ICRA TARİHİ',
(CASE WHEN D.HESAP IN (SELECT T_HESAP_NO FROM TAKIP) THEN
(SELECT CONVERT(VARCHAR(10),HACIZ_TAR,103) FROM TAKIP WHERE T_HESAP_NO = D.HESAP)
ELSE '' END) AS 'HACİZ TARİHİ'
FROM YAZ..MARDATA.S_TEKLIF B, AVUKAT D
WHERE B.HESAP_NO = D.HESAP
AND B.KAPANIS_TAR IS NULL
AND ISNULL(dbo.fngcodeme(B.HESAP_NO, B.DOVIZ_KOD, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2,'01/01/2011', '11/03/2011'),0) > 0
GROUP BY B.HESAP_NO, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2,B.DOVIZ_KOD ,B.MUS_K_ISIM, D.AVUKAT, D.HESAP
And this is my dbo.fngcodeme Function,
ALTER FUNCTION [dbo].[fngcodeme]
(
#HESAP INT, #DOV INT, #TEKLIF VARCHAR(10), #BAS VARCHAR(10), #BIT VARCHAR(10)
)
RETURNS FLOAT
AS
BEGIN
DECLARE #Result FLOAT
SET #Result = (SELECT SUM(TUTAR)
FROM YAZ..MARDATA.M_GHAREKET
WHERE TEMEL_HESAP = #HESAP
AND DOVIZ_KOD = #DOV
AND REF_KOD = 'GC'
AND BACAK_GRUP = 'PERT'
AND ISL_KOD = 1
AND ACIKLAMA LIKE '%' + #TEKLIF + '%'
AND ISL_TAR >= CONVERT(DATETIME, + '' + #BAS + '',103)
AND ISL_TAR <= CONVERT(DATETIME, + '' + #BIT + '',103)
)
RETURN #Result
END
What i want is
IF `Bit. Tar. (End Date)` is less or equal then 28/02/2011 --> Use M_HAREKET(table)
IF Baş. Tar. (Start Date) is great or equal then 01/03/2011 --> Use M_GHAREKET(table)
How can i do that?
Should i change SQL or Function? Which one?

If #BAS and #BIT are dates, pass them in as dates. Don't use VARCHAR.
ALTER FUNCTION [dbo].[fngcodeme]
(
#HESAP INT, #DOV INT, #TEKLIF VARCHAR(10), #BAS datetime, #BIT datetime
)
RETURNS FLOAT
AS
BEGIN
DECLARE #Result FLOAT
IF CONVERT(DATETIME, #BIT,103) <= '20110228'
SET #Result = (SELECT SUM(TUTAR)
FROM YAZ..MARDATA.M_HAREKET
WHERE TEMEL_HESAP = #HESAP
AND DOVIZ_KOD = #DOV
AND REF_KOD = 'GC'
AND BACAK_GRUP = 'PERT'
AND ISL_KOD = 1
AND ACIKLAMA LIKE '%' + #TEKLIF + '%'
AND ISL_TAR >= CONVERT(DATETIME, #BAS,103)
AND ISL_TAR <= CONVERT(DATETIME, #BIT,103)
)
ELSE
SET #Result = (SELECT SUM(TUTAR)
FROM YAZ..MARDATA.M_GHAREKET
WHERE TEMEL_HESAP = #HESAP
AND DOVIZ_KOD = #DOV
AND REF_KOD = 'GC'
AND BACAK_GRUP = 'PERT'
AND ISL_KOD = 1
AND ACIKLAMA LIKE '%' + #TEKLIF + '%'
AND ISL_TAR >= CONVERT(DATETIME, #BAS,103)
AND ISL_TAR <= CONVERT(DATETIME, #BIT,103)
)
RETURN #Result
END
As for the calling function, don't use region specific date formats. Stick to YYYYMMDD or one of the ISO/XML ones. So your query would be
SELECT B.HESAP_NO, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2 AS 'TEKLIF',B.MUS_K_ISIM,
dbo.fngcodeme(B.HESAP_NO, B.DOVIZ_KOD, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2,'20110101', '20110311') AS 'YATAN',
......

Related

SQL converting CSV text to Table

I have a table with a list of customer orders (s84_Schedule). I have a second table with comments on the orders (s84_ScheduleNotes). When I pull the list of orders from s84_Schedule, I do a left outer join to get the latest comment from s84_ScheduleNotes, because there are not always comments on every order.
Problem: I also have a SQL function that converts a comma-separated list of ProductIDs into a temporary table; this function does not seem to be working properly. I do not understand how these are related, but... If I use only one Product ID (meaning, no comma in the ProductVal variable), the left outer join never pulls in the latest comment from s84_ScheduleNotes. However, if I provide 2 ProductIDs separated by commas in ProductVal, the latest comment will show up.
Here is the code that converts the CSV to a temp table (stole this off the internet somewhere a long time ago)...
CREATE FUNCTION [dbo].[CSVToTable] (#InStr VARCHAR(MAX))
RETURNS #TempTab TABLE
(id int not null)
AS
BEGIN
;-- Ensure input ends with comma
SET #InStr = REPLACE(#InStr + ',', ',,', ',')
DECLARE #SP INT
DECLARE #VALUE VARCHAR(1000)
WHILE PATINDEX('%,%', #INSTR ) <> 0
BEGIN
SELECT #SP = PATINDEX('%,%',#INSTR)
SELECT #VALUE = LEFT(#INSTR , #SP - 1)
SELECT #INSTR = STUFF(#INSTR, 1, #SP, '')
INSERT INTO #TempTab(id) VALUES (#VALUE)
END
RETURN
END
GO
Here is my procedure which pulls the orders and the comments...
CREATE PROCEDURE dbo.GetFilteredSchedule
(
#InstallDateOperator INT,
#InstallDateRange1 DATETIME,
#InstallDateRange2 DATETIME,
#InstallDateDynRange1 INT,
#InstallDateDynRange2 INT,
#CustExpectedOperator INT,
#CustExpectedRange1 DATETIME,
#CustExpectedRange2 DATETIME,
#CustExpectedDynRange1 INT,
#CustExpectedDynRange2 INT,
#CompletedDateOperator INT,
#CompletedDateRange1 DATETIME,
#CompletedDateRange2 DATETIME,
#CompletedDateDynRange1 INT,
#CompletedDateDynRange2 INT,
#ProdInStoreDateOperator INT,
#ProdInStoreDateRange1 DATETIME,
#ProdInStoreDateRange2 DATETIME,
#ProdInStoreDateDynRange1 INT,
#ProdInStoreDateDynRange2 INT,
#InvoiceNumVal VARCHAR(2000),
#InstallerVal VARCHAR(2000),
#CustomerVal VARCHAR(2000),
#SubdivisionVal VARCHAR(2000),
#ProductVal VARCHAR(2000),
#LotNumVal VARCHAR(2000),
#EstimateNumVal VARCHAR(2000),
#SONumVal VARCHAR(2000),
#ProdInStoreVal BIT,
#OrderProcessedVal BIT,
#StatusVal VARCHAR(2000),
#FieldRepVal VARCHAR(2000),
#WorkOrderNumVal VARCHAR(2000),
#WindowVal VARCHAR(2000),
#StoreVal VARCHAR(2000),
#DriverVal VARCHAR(2000),
#YardEmployeeVal VARCHAR(2000),
#TruckTypeVal VARCHAR(2000),
#LotNumExact INT,
#StatusIDExact INT,
#SearchText VARCHAR(2000),
#CustomerIdRestriction VARCHAR(2000),
#OrderBy1 INT,
#OrderBy2 INT
)
AS
BEGIN
SELECT sch.ScheduleID, sch.InstallDate, sch.CustomerExpectedDate, sch.CompletedDate, sch.InvoiceNumber,
sch.InstallerID, sch.CustomerID, sch.SubdivisionID, sch.ProductID, sch.LotNumber, sch.EstimateNumber, sch.SONumber,
sch.ProductInStore, sch.ProductInStoreDate, sch.OrderProcessed, sch.HomeownerInfo, sch.StatusID, sch.FieldRepID,
sch.WindowID, sch.StoreID, sch.ConnectedToProject, sch.DriverEmailAddress, sch.YardEmployeeEmailAddress, sch.TruckTypeID,
installer.InstallerName AS 'InstallerName',
customer.CustomerName AS 'CustomerName',
subdivision.SubdivisionName AS 'SubdivisionName',
product.ProductName AS 'ProductName',
fieldRep.FieldRepName AS 'FieldRepName',
window.WindowName AS 'WindowName',
store.StoreName AS 'StoreName',
stat.StatusName AS 'StatusName',
driver.LastName AS 'DriverLastName', driver.FirstName AS 'DriverFirstName',
yardEmployee.LastName AS 'YardEmployeeLastName', yardEmployee.FirstName AS 'YardEmployeeFirstName',
truckType.TruckTypeName AS 'TruckTypeName',
sch.ScheduleID AS id,
Cast(customer.CustomerName AS VARCHAR(2000)) + ' - ' + Cast(sch.LotNumber AS VARCHAR(2000)) + ' - ' + Cast(subdivision.SubdivisionName AS VARCHAR(2000)) + ' - ' + Cast(product.ProductName AS VARCHAR(2000)) AS 'title',
CONVERT(VARCHAR(50), sch.CustomerExpectedDate, 101) + ' ' + CONVERT(VARCHAR, DATEPART(hh, sch.CustomerExpectedDate)) + ':' + RIGHT('0' + CONVERT(VARCHAR, DATEPART(mi, sch.CustomerExpectedDate)), 2) AS 'start',
CONVERT(VARCHAR(50), DATEADD(hh, 1, sch.CustomerExpectedDate), 101) AS 'end',
stat.StatusColor AS 'backgroundColor',
note.NoteText AS 'NoteText'
FROM s84_Schedule sch
LEFT OUTER JOIN dbo.s84_ScheduleNotes AS note ON note.ScheduleID = (SELECT MAX(n.ScheduleNoteID) FROM dbo.s84_ScheduleNotes n WHERE n.ScheduleID = sch.ScheduleID)
JOIN dbo.s84_Installer AS installer ON sch.InstallerID = installer.InstallerID
JOIN dbo.s84_Customer AS customer on sch.CustomerID = customer.CustomerID
JOIN dbo.s84_Subdivision AS subdivision ON sch.SubdivisionID = subdivision.SubdivisionID
JOIN dbo.s84_Product AS product ON sch.ProductID = product.ProductID
JOIN dbo.s84_FieldRep AS fieldRep ON sch.FieldRepID = fieldRep.FieldRepID
JOIN dbo.s84_Window AS window ON sch.WindowID = window.WindowID
JOIN dbo.s84_Store AS store ON sch.StoreID = store.StoreID
JOIN dbo.s84_Status AS stat ON sch.StatusID = stat.StatusID
JOIN dbo.s84_TruckType AS truckType ON sch.TruckTypeID = truckType.TruckTypeID
LEFT OUTER JOIN dbo.s84_Employee AS driver ON ((#DriverVal IS NOT NULL) AND (driver.EmailAddress = #DriverVal))
LEFT OUTER JOIN dbo.s84_Employee AS yardEmployee ON ((#YardEmployeeVal IS NOT NULL) AND (yardEmployee.EmailAddress = #YardEmployeeVal))
WHERE
(#InvoiceNumVal IS NULL OR (sch.InvoiceNumber LIKE '%' + #InvoiceNumVal + '%')) AND
(#InstallerVal IS NULL OR (installer.InstallerID = #InstallerVal)) AND
(#CustomerVal IS NULL OR (customer.CustomerName LIKE '%' + #CustomerVal + '%')) AND
(#SubdivisionVal IS NULL OR (subdivision.SubdivisionName LIKE '%' + #SubdivisionVal + '%')) AND
(#ProductVal IS NULL OR ( sch.ProductID IN (SELECT * FROM dbo.CSVToTable(#ProductVal)) )) AND
(#LotNumVal IS NULL OR (sch.LotNumber LIKE '%' + #LotNumVal + '%')) AND
(#EstimateNumVal IS NULL OR (sch.EstimateNumber LIKE '%' + #EstimateNumVal + '%')) AND
(#SONumVal IS NULL OR (sch.SONumber LIKE '%' + #SONumVal + '%')) AND
(#ProdInStoreVal IS NULL OR (sch.ProductInStore = #ProdInStoreVal)) AND
(#OrderProcessedVal IS NULL OR (sch.OrderProcessed = #OrderProcessedVal)) AND
(#FieldRepVal IS NULL OR (fieldRep.FieldRepID = #FieldRepVal)) AND
(#WorkOrderNumVal IS NULL OR (sch.ScheduleID LIKE '%' + #WorkOrderNumVal + '%')) AND
(#WindowVal IS NULL OR (window.WindowName LIKE '%' + #WindowVal + '%')) AND
(#StoreVal IS NULL OR (store.StoreName LIKE '%' + #StoreVal + '%')) AND
(#DriverVal IS NULL OR ((driver.FirstName LIKE '%' + #DriverVal + '%') OR (driver.LastName LIKE '%' + #DriverVal + '%'))) AND
(#YardEmployeeVal IS NULL OR ((yardEmployee.FirstName LIKE '%' + #YardEmployeeVal + '%') OR (yardEmployee.LastName LIKE '%' + #YardEmployeeVal + '%'))) AND
(#TruckTypeVal IS NULL OR (truckType.TruckTypeName LIKE '%' + #TruckTypeVal + '%')) AND
(#LotNumExact IS NULL OR (sch.LotNumber = #LotNumExact)) AND
(#StatusIDExact IS NULL OR (sch.StatusID = #StatusIDExact)) AND
(#CustomerIdRestriction IS NULL OR ( sch.CustomerID IN (SELECT * FROM dbo.CSVToTable(#CustomerIdRestriction)) )) AND
(#StatusVal IS NULL OR
( sch.StatusID IN (SELECT * FROM dbo.CSVToTable(#StatusVal)) OR
(
('9999' IN (SELECT * FROM dbo.CSVToTable(#StatusVal)) ) AND
( sch.StatusID NOT IN (SELECT * FROM (VALUES ('1'), ('2'), ('3'), ('4')) AS X(id)) )
)
)
) AND
(((#InstallDateOperator IS NULL) OR (#InstallDateOperator = 99)) OR
(#InstallDateOperator = 1 AND sch.InstallDate = #InstallDateRange1) OR
(#InstallDateOperator = 2 AND sch.InstallDate <= #InstallDateRange1) OR
(#InstallDateOperator = 3 AND sch.InstallDate >= #InstallDateRange1) OR
(#InstallDateOperator = 4 AND sch.InstallDate >= #InstallDateRange1 AND sch.InstallDate <= #InstallDateRange2) OR
(#InstallDateOperator = 5 AND sch.InstallDate BETWEEN DATEADD(mm,-#InstallDateDynRange1,GETDATE()) AND DATEADD(mm,#InstallDateDynRange2,GETDATE()))
) AND
(((#CustExpectedOperator IS NULL) OR (#CustExpectedOperator = 99)) OR
(#CustExpectedOperator = 1 AND sch.CustomerExpectedDate = #CustExpectedRange1) OR
(#CustExpectedOperator = 2 AND sch.CustomerExpectedDate <= #CustExpectedRange1) OR
(#CustExpectedOperator = 3 AND sch.CustomerExpectedDate >= #CustExpectedRange1) OR
(#CustExpectedOperator = 4 AND sch.CustomerExpectedDate >= #CustExpectedRange1 AND sch.CustomerExpectedDate <= #CustExpectedRange2) OR
(#CustExpectedOperator = 5 AND sch.CustomerExpectedDate BETWEEN DATEADD(mm,-#CustExpectedDynRange1,GETDATE()) AND DATEADD(mm,#CustExpectedDynRange2,GETDATE()))
) AND
(((#CompletedDateOperator IS NULL) OR (#CompletedDateOperator = 99)) OR
(#CompletedDateOperator = 1 AND sch.CompletedDate = #CompletedDateRange1) OR
(#CompletedDateOperator = 2 AND sch.CompletedDate <= #CompletedDateRange1) OR
(#CompletedDateOperator = 3 AND sch.CompletedDate >= #CompletedDateRange1) OR
(#CompletedDateOperator = 4 AND sch.CompletedDate >= #CompletedDateRange1 AND sch.CompletedDate <= #CompletedDateRange2) OR
(#CompletedDateOperator = 5 AND sch.CompletedDate BETWEEN DATEADD(mm,-#CompletedDateDynRange1,GETDATE()) AND DATEADD(mm,#CompletedDateDynRange2,GETDATE()))
) AND
(((#ProdInStoreDateOperator IS NULL) OR (#ProdInStoreDateOperator = 99)) OR
(#ProdInStoreDateOperator = 1 AND sch.ProductInStoreDate = #ProdInStoreDateRange1) OR
(#ProdInStoreDateOperator = 2 AND sch.ProductInStoreDate <= #ProdInStoreDateRange1) OR
(#ProdInStoreDateOperator = 3 AND sch.ProductInStoreDate >= #ProdInStoreDateRange1) OR
(#ProdInStoreDateOperator = 4 AND sch.ProductInStoreDate >= #ProdInStoreDateRange1 AND sch.ProductInStoreDate <= #ProdInStoreDateRange2) OR
(#ProdInStoreDateOperator = 5 AND sch.ProductInStoreDate BETWEEN DATEADD(mm,-#ProdInStoreDateDynRange1,GETDATE()) AND DATEADD(mm,#ProdInStoreDateDynRange2,GETDATE()))
) AND
((#SearchText IS NULL) OR
( sch.InvoiceNumber LIKE '%' + #SearchText + '%' OR
installer.InstallerName LIKE '%' + #SearchText + '%' OR
customer.CustomerName LIKE '%' + #SearchText + '%' OR
subdivision.SubdivisionName LIKE '%' + #SearchText + '%' OR
product.ProductName LIKE '%' + #SearchText + '%' OR
sch.LotNumber LIKE '%' + #SearchText + '%' OR
sch.EstimateNumber LIKE '%' + #SearchText + '%' OR
sch.SONumber LIKE '%' + #SearchText + '%' OR
stat.StatusName LIKE '%' + #SearchText + '%' OR
fieldRep.FieldRepName LIKE '%' + #SearchText + '%' OR
sch.ScheduleID LIKE '%' + #SearchText + '%' OR
window.WindowName LIKE '%' + #SearchText + '%' OR
store.StoreName LIKE '%' + #SearchText + '%'
))
ORDER BY
CASE #OrderBy2
WHEN 1 THEN sch.InstallDate
WHEN 2 THEN sch.CustomerExpectedDate
WHEN 3 THEN sch.CustomerExpectedDate
WHEN 4 THEN sch.CompletedDate
WHEN 5 THEN sch.InvoiceNumber
WHEN 6 THEN installer.InstallerName
WHEN 7 THEN customer.CustomerName
WHEN 8 THEN subdivision.SubdivisionName
WHEN 9 THEN product.ProductName
WHEN 10 THEN sch.LotNumber
WHEN 11 THEN sch.EstimateNumber
WHEN 12 THEN sch.SONumber
WHEN 13 THEN sch.ProductInStore
WHEN 14 THEN sch.ProductInStoreDate
WHEN 15 THEN sch.OrderProcessed
WHEN 16 THEN stat.StatusName
WHEN 17 THEN fieldRep.FieldRepName
WHEN 18 THEN window.WindowName
WHEN 19 THEN store.StoreName
WHEN 20 THEN driver.LastName
WHEN 21 THEN yardEmployee.LastName
ELSE sch.CustomerExpectedDate
END,
CASE #OrderBy1
WHEN 1 THEN sch.InstallDate
WHEN 2 THEN sch.CustomerExpectedDate
WHEN 3 THEN sch.CustomerExpectedDate
WHEN 4 THEN sch.CompletedDate
WHEN 5 THEN sch.InvoiceNumber
WHEN 6 THEN installer.InstallerName
WHEN 7 THEN customer.CustomerName
WHEN 8 THEN subdivision.SubdivisionName
WHEN 9 THEN product.ProductName
WHEN 10 THEN sch.LotNumber
WHEN 11 THEN sch.EstimateNumber
WHEN 12 THEN sch.SONumber
WHEN 13 THEN sch.ProductInStore
WHEN 14 THEN sch.ProductInStoreDate
WHEN 15 THEN sch.OrderProcessed
WHEN 16 THEN stat.StatusName
WHEN 17 THEN fieldRep.FieldRepName
WHEN 18 THEN window.WindowName
WHEN 19 THEN store.StoreName
WHEN 20 THEN driver.LastName
WHEN 21 THEN yardEmployee.LastName
ELSE sch.CustomerExpectedDate
END;
END;
GO
When I provide values to the dbo.GetFilteredSchedule Procedure, these are the vars I set...
I set ProductVal to "26"
I set StatusVal to "1,3,4,9999"
I set OrderBy1 and OrderBy2 to "3"
Everything else is NULL
Here's a print screen of what my table looks like...
This looks wrong:
LEFT OUTER JOIN dbo.s84_ScheduleNotes AS note
ON note.ScheduleID = (SELECT MAX(n.ScheduleNoteID) FROM dbo.s84_ScheduleNotes n WHERE n.ScheduleID = sch.ScheduleID)
I believe note.ScheduleID should be note.ScheduleNoteID

Combine result set from stored procedure

I want to combine the result set of my stored procedure.
I am using UNION, however it doesn't work and throws errors like this:
Msg 156, Level 15, State 1, Line 147
Incorrect syntax near the keyword 'UNION'.
Msg 102, Level 15, State 1, Line 251
Incorrect syntax near 'END'.
I also tried putting in the temp table however once I started reusing the table, it will state that the temp table already exist.
Any help will be appreciated, thanks.
Current result:
lnid result Score_result
aaabbbccc 7B Current
lnid result Score_result
aaabbbccc 4D Override
Expected result:
lnid result Score_result
aaabbbccc 7B Current
aaabbbccc 4D Override
Stored procedure:
CREATE PROCEDURE [dbo].[Results]
--#LanID AS VARCHAR(50) = NULL,
--#period AS VARCHAR(50) = NULL,
--#strtdt AS DATETIME,
--#enddt AS DATETIME
AS
BEGIN
DECLARE #LanID AS VARCHAR(50)
DECLARE #period AS VARCHAR(50)
DECLARE #strtdt AS DATETIME
DECLARE #enddt AS DATETIME
SET #LanID = 'aaabbbccc'
SET #period = 'H1'
SET #strtdt ='2015-10-01'
SET #enddt = DATEADD(MONTH, 11, #strtdt )
IF NOT EXISTS (SELECT *
FROM overridetable
WHERE AGENT = #LanID
AND KRA_HALF = #strtdt
AND BIT_CURRENT = 1
AND IS_FULL_YEAR = 0)
BEGIN
IF NOT EXISTS (SELECT *
FROM periodictable
WHERE repdate BETWEEN #strtdt AND #enddt
AND lnid = #LanID
AND rep_period = #period)
BEGIN
IF #period IN ('H1', 'H2')
(SELECT
lnid, CAST (ROUND(SUM(CAST(numscre AS FLOAT)) / SUM(CAST(counterOfRep AS FLOAT)), 0) AS VARCHAR) + ' ' + CAST (CASE WHEN ROUND(SUM(CAST(cmpscre AS FLOAT)) / SUM(CAST(counterOfRep AS FLOAT)),0) = 1 THEN 'A'
WHEN ROUND(SUM(CAST(cmpscre AS FLOAT)) / SUM(CAST(counterOfRep AS FLOAT)),0) = 2 THEN 'B'
WHEN ROUND(SUM(CAST(cmpscre AS FLOAT)) / SUM(CAST(counterOfRep AS FLOAT)),0) = 3 THEN 'C' END AS VARCHAR) Result
,'Current' as 'Score_Result'
FROM
(SELECT
repdate, lnid, team_Code, numscre,
CASE
WHEN cmpscre = 'A' THEN 1
WHEN cmpscre = 'B' THEN 2
WHEN cmpscre = 'C' THEN 3
END AS cmpscre,
rep_period, 1 AS CounterOfRep,
CASE
WHEN rep_period IN ('Q1','Q2') THEN 'H1'
WHEN rep_period IN ('Q3','Q4') THEN 'H2'
END AS HalfYearPeriod
FROM
periodictable
WHERE
rep_period LIKE 'Q%'
AND repdate BETWEEN #strtdt AND #enddt) tmp
WHERE
lnid = #LanID
AND halfyearperiod = #period
GROUP BY
HalfYearPeriod, lnid, team_code)
ELSE IF #period IN ('FY')
(SELECT
lnid, CAST (ROUND(SUM(CAST(numscre AS FLOAT)) / SUM(CAST(counterOfRep AS FLOAT)),0) AS VARCHAR) + ' ' + CAST (CASE WHEN ROUND(SUM(CAST(cmpscre AS FLOAT)) / SUM(CAST(counterOfRep AS FLOAT)),0) = 1 THEN 'A'
WHEN ROUND(SUM(CAST(cmpscre AS FLOAT)) / SUM(CAST(counterOfRep AS FLOAT)),0) = 2 THEN 'B'
WHEN ROUND(SUM(CAST(cmpscre AS FLOAT)) / SUM(CAST(counterOfRep AS FLOAT)),0) = 3 THEN 'C' END AS VARCHAR) Result
,'Current' as 'Score_Result'
FROM
(SELECT
repdate, lnid, team_Code, numscre,
CASE
WHEN cmpscre = 'A' THEN 1
WHEN cmpscre = 'B' THEN 2
WHEN cmpscre = 'C' THEN 3
END AS cmpscre,
rep_period, 1 AS CounterOfRep,
'FY' AS FullYearPeriod
FROM
periodictable
WHERE
rep_period LIKE 'Q%'
AND repdate BETWEEN #strtdt AND #enddt) tmp
WHERE
lnid = #LanID
AND FullYearPeriod = #period
GROUP BY
FullYearPeriod, lnid, team_code)
ELSE
(SELECT lnid, CAST (numscre AS VARCHAR) + ' ' +
CAST (cmpscre AS VARCHAR) Result
,'Current' as 'Score_Result'
FROM periodictable
WHERE lnid = #LanID
AND rep_period = #period
AND rep_period LIKE 'Q%'
AND repdate BETWEEN #strtdt AND #enddt)
END
ELSE
BEGIN
(SELECT lnid, CAST(numscre AS VARCHAR) + ' ' + CAST(cmpscre AS VARCHAR) AS Result
,'Current' as 'Score_Result'
FROM periodictable
WHERE repdate between #strtdt AND #enddt
AND lnid = #LanID
AND rep_period = #period)
END
END
ELSE
BEGIN
(SELECT Agent AS lnid, CAST(CAST(ROUND(Numerical_Override, 0 ) AS INT) AS VARCHAR) + ' ' +
CAST((CASE WHEN Competency_Override = 1 THEN 'A'
WHEN Competency_Override = 2 THEN 'B'
WHEN Competency_Override = 3 THEN 'C' ELSE '*' END ) AS VARCHAR) AS Result
,'Current' as 'Score_Result'
FROM overridetable
WHERE AGENT = #LanID AND KRA_HALF = #strtdt AND BIT_CURRENT = 1 AND IS_FULL_YEAR = 0)
END
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IF EXISTS
(SELECT *
FROM overridetable
WHERE AGENT = #LanID AND KRA_HALF = #strtdt AND BIT_CURRENT = 1 AND IS_FULL_YEAR = 0)
BEGIN
IF NOT EXISTS
(SELECT *
FROM periodictable
WHERE repdate BETWEEN #strtdt AND #enddt
AND lnid = #LanID
AND rep_period = #period)
BEGIN
IF #period IN ('H1', 'H2')
(SELECT lnid, CAST (ROUND(SUM(CAST(numscre AS FLOAT)) / SUM(CAST(counterOfRep AS FLOAT)),0) AS VARCHAR) + ' ' +
CAST (CASE WHEN ROUND(SUM(CAST(cmpscre AS FLOAT)) / SUM(CAST(counterOfRep AS FLOAT)),0) = 1 THEN 'A'
WHEN ROUND(SUM(CAST(cmpscre AS FLOAT)) / SUM(CAST(counterOfRep AS FLOAT)),0) = 2 THEN 'B'
WHEN ROUND(SUM(CAST(cmpscre AS FLOAT)) / SUM(CAST(counterOfRep AS FLOAT)),0) = 3 THEN 'C' END AS VARCHAR) Result
,'Override' as 'Score_Result'
FROM (SELECT repdate, lnid, team_Code, numscre,
CASE WHEN cmpscre = 'A' THEN 1
WHEN cmpscre = 'B' THEN 2
WHEN cmpscre = 'C' THEN 3 END AS cmpscre,
rep_period, 1 AS CounterOfRep,
CASE WHEN rep_period IN ('Q1','Q2') THEN 'H1'
WHEN rep_period IN ('Q3','Q4') THEN 'H2' END AS HalfYearPeriod
FROM periodictable
WHERE rep_period LIKE 'Q%'
AND repdate BETWEEN #strtdt AND #enddt)tmp
WHERE lnid = #LanID
AND halfyearperiod = #period
GROUP BY HalfYearPeriod,lnid, team_code)
ELSE IF #period IN ('FY')
(SELECT lnid, CAST (ROUND(SUM(CAST(numscre AS FLOAT)) / SUM(CAST(counterOfRep AS FLOAT)),0) AS VARCHAR) + ' ' +
CAST (CASE WHEN ROUND(SUM(CAST(cmpscre AS FLOAT)) / SUM(CAST(counterOfRep AS FLOAT)),0) = 1 THEN 'A'
WHEN ROUND(SUM(CAST(cmpscre AS FLOAT)) / SUM(CAST(counterOfRep AS FLOAT)),0) = 2 THEN 'B'
WHEN ROUND(SUM(CAST(cmpscre AS FLOAT)) / SUM(CAST(counterOfRep AS FLOAT)),0) = 3 THEN 'C' END AS VARCHAR) Result
,'Override' as 'Score_Result'
FROM (SELECT repdate, lnid, team_Code, numscre,
CASE WHEN cmpscre = 'A' THEN 1
WHEN cmpscre = 'B' THEN 2
WHEN cmpscre = 'C' THEN 3 END AS cmpscre,
rep_period, 1 AS CounterOfRep,'FY' AS FullYearPeriod
FROM periodictable
WHERE rep_period LIKE 'Q%'
AND repdate BETWEEN #strtdt AND #enddt)tmp
WHERE lnid = #LanID
AND FullYearPeriod = #period
GROUP BY FullYearPeriod,lnid, team_code)
ELSE
(SELECT lnid, CAST (numscre AS VARCHAR) + ' ' +
CAST (cmpscre AS VARCHAR) Result
,'Override' as 'Score_Result'
FROM periodictable
WHERE lnid = #LanID
AND rep_period = #period
AND rep_period LIKE 'Q%'
AND repdate BETWEEN #strtdt AND #enddt)
END
ELSE
BEGIN
(SELECT lnid, CAST(numscre AS VARCHAR) + ' ' + CAST(cmpscre AS VARCHAR) AS Result
,'Override' as 'Score_Result'
FROM periodictable
WHERE repdate between #strtdt AND #enddt
AND lnid = #LanID
AND rep_period = #period)
END
END
ELSE
BEGIN
(SELECT #LanID AS lnid, '--' AS Result,
'Override' as 'Score_Result' )
END
END
You need a BEGIN somewhere.
Since the original stored proc is working fine, the simplest way to do it would be create 2 temp tables and where you're doing the original selects, do select intos. And then do one select at the end where you union both temp tables.
the main body of stored proc will look something like this:
create temp table 1 ......
create temp table 2 .........
IF NOT EXISTS
(SELECT *
FROM overridetable
WHERE AGENT = #LanID AND KRA_HALF = #strtdt AND BIT_CURRENT = 1 AND IS_FULL_YEAR = 0)
BEGIN
IF NOT EXISTS (SELECT *
FROM periodictable
WHERE repdate BETWEEN #strtdt AND #enddt
AND lnid = #LanID
AND rep_period = #period)
BEGIN
IF #period IN ('H1', 'H2')
select into temp table 1
ELSE IF #period IN ('FY')
select into temp table 1
ELSE
select into temp table 1
END
ELSE
BEGIN
select into temp table 1
END
END
ELSE
BEGIN
select into temp table 1
END
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IF NOT EXISTS
(SELECT *
FROM overridetable
WHERE AGENT = #LanID AND KRA_HALF = #strtdt AND BIT_CURRENT = 1 AND IS_FULL_YEAR = 0)
BEGIN
IF NOT EXISTS (SELECT *
FROM periodictable
WHERE repdate BETWEEN #strtdt AND #enddt
AND lnid = #LanID
AND rep_period = #period)
BEGIN
IF #period IN ('H1', 'H2')
select into temp table 2
ELSE IF #period IN ('FY')
select into temp table 2
ELSE
select into temp table 2
END
ELSE
BEGIN
select into temp table 2
END
END
ELSE
BEGIN
select into temp table 2
END
(select * from temp table 1) union (select * from temp table 2)

SQL Server : prevent output of tablename with date later then today

I am trying to display data with 11 months from 11 tables. Each table containing a different months data. The table name contains the date of each table. At the moment my code works in a way that a person has to input a date such as 201404 then it will display all months from 201404 right up to 201503. I need to put a check in place so that if the person types in 201507 it only throws out 201507 up to 201510 as the remaining months do not exists as yet.
This is my code:
alter PROCEDURE stp3
#FirstTableMonth int =0,
#EndMonth datetime
AS
DECLARE
#LinkedServerName sysname = 'SERVER1',
#left int = 0,
#right int= 0,
#STRING VARCHAR(6),
#monthex int = 12,
#yearex int,
#yearstring int,
#DynamicSQL nvarchar(max) = '',
#DynamicSQL2 nvarchar(max) = '',
#OpenQuerySql nvarchar(max),
#Table_Name sysname,
#Table_Name2 sysname,
#TableMonth int,
#TableMonth2 int ,
#CurrentMonth int = 0,
#NextYearMonth int = 1,
#part2 nvarchar(max) = '',
#TwelfthMonth int = 0;
SET #FirstTableMonth= CAST(#FirstTableMonth AS VARCHAR(6))
set #left = cast(left(#FirstTableMonth,4) +1 as varchar(max))
set #right = right(#FirstTableMonth,2) - 1
set #monthex = 11
set #yearex = cast(left(#FirstTableMonth,4) as varchar(max))
set #yearstring = case when right(#FirstTableMonth,2) = '01' then left(#FirstTableMonth,4) + RIGHT( #monthex + LTRIM( RTRIM( right(#FirstTableMonth,2) ) ), 6 ) else #left end
SET #STRING =
case when right(#FirstTableMonth,2) = '01' then #yearstring
when #right < 10 then CAST(#left AS VARCHAR(4)) + RIGHT( '0' + LTRIM( RTRIM( #right ) ), 6 )
else CAST(#left AS VARCHAR(4)) + RIGHT( LTRIM( RTRIM( #right ) ), 6 ) end
WHILE #CurrentMonth < 11 AND #EndMonth < getdate()
BEGIN
SELECT #TableMonth = CASE WHEN (#FirstTableMonth + #CurrentMonth) % 100 < 13 THEN
#FirstTableMonth + #CurrentMonth
ELSE
#FirstTableMonth + 100 - (#FirstTableMonth % 100) + #NextYearMonth
END,
#NextYearMonth = CASE WHEN (#FirstTableMonth + #CurrentMonth) % 100 < 13 THEN
#NextYearMonth
ELSE
#NextYearMonth + 1
END,
#Table_Name = 'XX_'+CAST(#TableMonth as varchar)+'_T' ,
#TableMonth2 = #TableMonth,
#Table_Name2 = 'XX_'+CAST(#TableMonth2 as varchar)+'_T' ,
#DynamicSQL = #DynamicSQL +
'SELECT
*
FROM '+ #Table_Name + '
'+ CASE WHEN #CurrentMonth < 10 THEN ' UNION ALL ' ELSE '' END ,
#DynamicSQL2 = #DynamicSQL2 +
'SELECT
*
FROM '+ #Table_Name2 + '
'
SET #CurrentMonth = #CurrentMonth + 1
IF OBJECT_ID('tempdb..#TEMP') IS NOT NULL BEGIN DROP TABLE #TEMP END
IF OBJECT_ID('tempdb..#Unioned') IS NOT NULL BEGIN DROP TABLE #Unioned END
--last months snapshot
SELECT
*
INTO #UNIONED
FROM OPENQUERY(SERVER1,' SELECT
*
FROM yy_T
'
)
union all
SELECT
*
FROM OPENQUERY(SERVER1,' SELECT
*
FROM yk
'
)
DECLARE #dateAsNumber VARCHAR(8);
SET #dateAsNumber = CONVERT(CHAR(6),GETDATE(), 112);
DECLARE #DateConvertedFromNumber DATETIME;
SELECT #DateConvertedFromNumber = CONVERT (DATETIME, CONVERT(CHAR(8), #dateAsNumber + '01'))
select
*
LEFT(CONVERT(VARCHAR, DATEADD(MONTH, -1,#DateConvertedFromNumber), 112),6) AS 'Period'
INTO #temp
from #Unioned
drop table OpenQTable
--if equal to month + 99 = previous month then union 11 tables with last months snapshot
--else
--union 11 tables with 12th table
SET #OpenQuerySql = 'IF (' + cast(#FirstTableMonth as varchar) + '+99) = CONVERT(nvarchar(6), dateadd(month,-1,GETDATE()), 112)
BEGIN
SELECT *
FROM OPENQUERY(['+ #LinkedServerName +'], '''+ #DynamicSQL + ''' )
UNION ALL
SELECT *
FROM #temp
END
else
begin
SELECT *
FROM OPENQUERY(['+ #LinkedServerName +'], '''+ #DynamicSQL + ''' )
UNION ALL
SELECT *
FROM OPENQUERY(['+ #LinkedServerName +'], '''+ #DynamicSQL2 + ''' )
end
'
END
insert into OpenQTable
EXECUTE sp_executesql #OpenQuerySql
go
}

SQL Parameter in CASE Statement

Kindly see my Stored Proc below. I'm trying to pass through a value of 1 or 0 from a parameter in a CASE statement.
I get the error which I can tell are in the SELECT statement calling the parameter #payment_status in the CASE statment:
Msg 102, Level 15, State 1, Line 17 Incorrect syntax near '='.
Msg 102, Level 15, State 1, Line 21 Incorrect syntax near '='.
Here's the script:
ALTER PROC ash_ap_cash_req_sp (#End_Date NVARCHAR(12),
#Payment_Hold NVARCHAR(32))
AS
SET NOCOUNT ON
DECLARE #debug INT,
#julian_end_date VARCHAR(7),
#ap_cash_req NVARCHAR(4000),
#payment_status VARCHAR(400)
SET #End_Date = RIGHT('00' + CONVERT(VARCHAR(2), datepart(mm, #End_Date)), 2) + '/' + RIGHT('00' + CONVERT(VARCHAR(2), datepart(dd, #End_Date)), 2) + '/' + RIGHT('0000' + CONVERT(VARCHAR(4), datepart(yyyy, #End_Date)), 4)
SET #julian_end_date = (SELECT datediff(dd, '1/1/1753', #End_Date) + 639906)
IF #Payment_Hold = 'All'
BEGIN
SET #payment_status = '
SELECT payment_hold_flag
FROM dbase.dbo.apvchr
WHERE payment_hold_flag in (0,1)'
END
ELSE IF #Payment_Hold = 'Yes'
BEGIN
SET #payment_status = '
SELECT payment_hold_flag
FROM dbase.dbo.apvchr
WHERE payment_hold_flag = 1'
END
ELSE IF #Payment_Hold = 'No'
BEGIN
SET #payment_status = '
SELECT payment_hold_flag
FROM dbase.dbo.apvchr
WHERE payment_hold_flag = 0'
END
SET #debug = 0
SET #ap_cash_req = '
IF OBJECT_ID(''temp.dbo.##ash_ap_cash_req_sp'') is NOT NULL
DROP TABLE ##ash_ap_cash_req_sp;
CREATE TABLE ##ash_ap_cash_req_sp
(vendor varchar(12)
, pay_to varchar(12)
, vendor_name varchar(32)
, voucher_no varchar(12)
, invoice_no varchar(32)
, date_doc varchar(12)
--, date_doc_jd varchar(12)
, date_due varchar(12)
--, date_due_jd varchar(12)
, date_applied varchar(12)
--, date_applied_jd varchar(12)
, paid_status varchar(8)
--, payment_status varchar(12)
, payment_hold_status varchar(8)
, amount_open decimal(20,2)
, days_diff float
, days_0_to_30 decimal(20,2)
, days_31_to_60 decimal(20,2)
, days_61_to_90 decimal(20,2)
, days_91_to_120 decimal(20,2)
, days_121_to_150 decimal(20,2)
, total_over_90 decimal(20,2)
, total_over_150 decimal(20,2)
, payment_code varchar(8)
)'
IF #debug = 1
BEGIN
PRINT #ap_cash_req
PRINT ''
END
ELSE
BEGIN
EXEC sp_executesql #ap_cash_req
END
SET #ap_cash_req = '
SELECT
m.vendor
, m.pay_to
, m.address_name as vendor_name
, h.trx_ctrl_num as voucher_no
, h.doc_ctrl_num as invoice_no
, CONVERT(varchar(12),dateadd(dd,(h.date_doc- 639906),''1/1/1753''),101) as date_doc
--, h.date_doc as date_doc_jd
, CONVERT(varchar(12),dateadd(dd,(h.date_due- 639906),''1/1/1753''),101) as date_due
--, h.date_due as date_due_jd
, CONVERT(varchar(12),dateadd(dd,(h.date_applied- 639906),''1/1/1753''),101) as date_applied
--, h.date_applied as date_applied_jd
, paid_status = CASE WHEN h.paid_flag = 1
THEN ''Paid''
ELSE ''Not Paid'' END
, h.payment_hold_flag = CASE
WHEN ' + #payment_status + ' = 1 THEN ''On Hold''
ELSE ''Not On Hold''
END as payment_hold_status
, amount_open = (amt_net-amt_paid_to_date)
, h.payment_code
, days_dif = (' + #julian_end_date + ' - h.date_applied)
, days_0_to_30 = CASE WHEN h.date_applied >= ' + #julian_end_date + '-30
THEN h.amt_net --(h.amt_net-h.amt_paid_to_date)
ELSE 0 END
, days_31_to_60 = CASE WHEN h.date_applied >= ' + #julian_end_date + '-60
AND h.date_applied <= ' + #julian_end_date + '-31
THEN h.amt_net
ELSE 0 END
, days_61_to_90 = CASE WHEN h.date_applied >= ' + #julian_end_date + '-90
AND h.date_applied <= ' + #julian_end_date + '-61
THEN h.amt_net
ELSE 0 END
, days_91_to_120 = CASE WHEN h.date_applied >= ' + #julian_end_date + '-120
AND h.date_applied <= ' + #julian_end_date + '-91
THEN h.amt_net
ELSE 0 END
, days_121_to_150 = CASE WHEN h.date_applied >= ' + #julian_end_date + '-150
AND h.date_applied <= ' + #julian_end_date + '-121
THEN h.amt_net
ELSE 0 END
, total_over_90 = CASE WHEN h.date_applied <= ' + #julian_end_date + '-91
THEN h.amt_net
ELSE 0 END
, total_over_150 = CASE WHEN h.date_applied <= ' + #julian_end_date + '-151
THEN h.amt_net
ELSE 0 END
FROM dbase.dbo.apvchr h
JOIN dbase.dbo.apvdet d
ON h.trx_ctrl_num = d.trx_ctrl_num
JOIN dbase.dbo.master m
ON h.vendor = m.vendor
AND h.pay_to = m.pay_to
GROUP BY m.vendor, m.pay_to, m.address_name
, h.trx_ctrl_num, h.doc_ctrl_num, h.date_doc, h.date_due, h.date_applied, h.paid_flag, h.payment_hold_flag
, h.amt_net, h.amt_paid_to_date, h.payment_code, h.payment_hold_flag
--ORDER BY NEWID()
'
IF #debug = 1
BEGIN
PRINT #ap_cash_req
PRINT ''
END
ELSE
BEGIN
EXEC sp_executesql #ap_cash_req
END
SET #ap_cash_req = '
SELECT * FROM ##ash_ap_cash_req_sp
';
SET #ap_cash_req = '
DROP TABLE ##ash_ap_cash_req_sp
';
IF #debug = 1
BEGIN
PRINT #ap_cash_req
PRINT ''
END
ELSE
BEGIN
EXEC sp_executesql #ap_cash_req
END
EXEC dbase.dbo.ash_ap_cash_req_sp;1 '03/11/2013','Yes'
Because #payment_status is a 'SELECT...', you'll need to wrap it with braces
h.payment_hold_flag = CASE
WHEN ('+#payment_status+') = 1 THEN ''On Hold''
ELSE ''Not On Hold''
END as payment_hold_status
but, that aside, I would question the syntax :
, amount_open = (amt_net-amt_paid_to_date)
- do you mean
, (amt_net-amt_paid_to_date) as amount_open?

Getting value twice in SQL

I have a SQL like this;
SELECT B.HESAP_NO, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2 AS 'TEKLIF',B.MUS_K_ISIM,
dbo.fngcodeme(B.HESAP_NO, B.DOVIZ_KOD, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2,'11/03/2011', '11/03/2011'),
(CASE WHEN B.DOVIZ_KOD = 21 THEN 'EUR' WHEN B.DOVIZ_KOD = 2 THEN 'USD' WHEN B.DOVIZ_KOD = 1 THEN 'TL' END) AS 'KUR',
D.AVUKAT,
(CASE WHEN D.HESAP IN (SELECT T_HESAP_NO FROM TAKIP) THEN
(SELECT ICRA_TAR FROM TAKIP WHERE T_HESAP_NO = D.HESAP)
ELSE ' ' END) AS 'ICRA TARİHİ',
(CASE WHEN D.HESAP IN (SELECT T_HESAP_NO FROM TAKIP) THEN
(SELECT HACIZ_TAR FROM TAKIP WHERE T_HESAP_NO = D.HESAP)
ELSE '' END) AS 'HACİZ TARİHİ'
FROM YAZ..MARDATA.S_TEKLIF B, AVUKAT D
WHERE B.HESAP_NO = D.HESAP
AND ISNULL(dbo.fngcodeme(B.HESAP_NO, B.DOVIZ_KOD, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2,'11/03/2011', '11/03/2011'),0) > 0
GROUP BY B.HESAP_NO, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2,B.DOVIZ_KOD ,B.MUS_K_ISIM, D.AVUKAT, D.HESAP
Here is my tables;
S_TEKLIF (B) AVUKAT TAKIP
HESAP_NO (PK) HESAP(PK) T_HESAP_NO (PK)
TEKLIF_NO1 MUS_K_ISIM ICRA_TAR
TEKLIF_NO2 AVUKAT HACIZ_TAR
MUS_K_ISIM
DOVIZ_KOD
And here is mine dbo.fngcodeme Function;
ALTER FUNCTION [dbo].[fngcodeme]
(
#HESAP INT, #DOV INT, #TEKLIF VARCHAR(10), #BAS VARCHAR(10), #BIT VARCHAR(10)
)
RETURNS FLOAT
AS
BEGIN
DECLARE #Result FLOAT
SET #Result = (SELECT SUM(TUTAR)
FROM YAZ..MARDATA.M_GHAREKET
WHERE TEMEL_HESAP = #HESAP
AND DOVIZ_KOD = #DOV
AND REF_KOD = 'GC'
AND BACAK_GRUP = 'PERT'
AND ISL_KOD = 1
AND ACIKLAMA LIKE '%' + #TEKLIF + '%'
AND ISL_TAR >= CONVERT(DATETIME, + '' + #BAS + '',103)
AND ISL_TAR <= CONVERT(DATETIME, + '' + #BIT + '',103)
)
RETURN #Result
END
My top SQL is working perfect but gettin two value with the same data.
Where the error i could be doing?
Best Regards,
Soner
It is not the same, the TEKLIF column differs. You group on that column, hence you will get two results of they differ.