<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Querying an SQL database in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/querying-an-sql-database/m-p/554974#M21198</link>
    <description>&lt;P&gt;ABAP Development?&lt;/P&gt;</description>
    <pubDate>Wed, 01 Nov 2017 20:37:46 GMT</pubDate>
    <dc:creator>retired_member</dc:creator>
    <dc:date>2017-11-01T20:37:46Z</dc:date>
    <item>
      <title>Querying an SQL database</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/querying-an-sql-database/m-p/554973#M21197</link>
      <description>&lt;P&gt;Hi&lt;/P&gt;
  &lt;P&gt;I am getting an error when querying an SQL database stating that only SELECT statements are permitted when attempting to run the following query. Can I not use variables?&lt;/P&gt;
  &lt;P&gt;DECLARE @acadyear AS VARCHAR(20);&lt;/P&gt;
  &lt;P&gt;SET @acadyear = '2012/2013';&lt;/P&gt;
  &lt;P&gt;DECLARE @studentcount AS INTEGER;&lt;/P&gt;
  &lt;P&gt;DECLARE @date AS SMALLDATETIME;&lt;/P&gt;
  &lt;P&gt;DECLARE @eventstart AS SMALLDATETIME;&lt;/P&gt;
  &lt;P&gt;DECLARE @eventend AS SMALLDATETIME;&lt;/P&gt;
  &lt;P&gt;SET @eventstart = dfsi.dbo.Getyearstartdate(@Acadyear);&lt;/P&gt;
  &lt;P&gt;SET @eventend = dfsi.dbo.Getyearenddate(@Acadyear);&lt;/P&gt;
  &lt;P&gt;SET @date = CASE&lt;/P&gt;
  &lt;P&gt; WHEN Getdate() &amp;gt; @eventend THEN @eventend&lt;/P&gt;
  &lt;P&gt; ELSE Getdate()&lt;/P&gt;
  &lt;P&gt; END;&lt;/P&gt;
  &lt;P&gt;SELECT @acadyear AS academicyear,&lt;/P&gt;
  &lt;P&gt; 'Attendance' as Cat_text,&lt;/P&gt;
  &lt;P&gt; 'Average' as text,&lt;/P&gt;
  &lt;P&gt; 'Whole School' as text_Whole,&lt;/P&gt;
  &lt;P&gt; Count(DISTINCT person_id) AS groupcount,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN Sum(possible) = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(Sum(attendancetotal) * 100 / Sum(possible) AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS attendance,&lt;/P&gt;
  &lt;P&gt; Sum(attendancetotal) AS attendancetotal,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN Sum(possible) = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(Sum(presenttotal) * 100 / Sum(possible) AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS present,&lt;/P&gt;
  &lt;P&gt; Sum(presenttotal) AS presenttotal,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN Sum(possible) = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(Sum(aeatotal) * 100 / Sum(possible) AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS aea,&lt;/P&gt;
  &lt;P&gt; Sum(aeatotal) AS aeatotal,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN Sum(possible) = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(Sum(authorisedabsencetotal) * 100 / Sum(possible) AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS aa,&lt;/P&gt;
  &lt;P&gt; Sum(authorisedabsencetotal) AS authorisedabsencetotal,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN Sum(possible) = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(Sum(unauthorisedabsencetotal) * 100 / Sum(possible) AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS uaa,&lt;/P&gt;
  &lt;P&gt; Sum(unauthorisedabsencetotal) AS unauthorisedabsencetotal,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN Sum(possible) = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(Sum(latebeforetotal) * 100 / Sum(possible) AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS latebefore,&lt;/P&gt;
  &lt;P&gt; Sum(latebeforetotal) AS latebeforetotal,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN Sum(possible) = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(Sum(lateaftertotal) * 100 / Sum(possible) AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS lateafter,&lt;/P&gt;
  &lt;P&gt; Sum(lateaftertotal) AS lateaftertotal,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN Sum(possible) = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(Sum(latestotal) * 100 / Sum(possible) AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS lates,&lt;/P&gt;
  &lt;P&gt; Sum(latestotal) AS latestotal,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN Sum(possible) = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(Sum(missingtotal) * 100 / Sum(possible) AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS missing,&lt;/P&gt;
  &lt;P&gt; Sum(missingtotal) AS missingtotal,&lt;/P&gt;
  &lt;P&gt; Sum(possible) AS possibletotal&lt;/P&gt;
  &lt;P&gt;FROM (SELECT *,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN possible = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(( present + aea ) * 100 / possible AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS attendancepc,&lt;/P&gt;
  &lt;P&gt;( present + aea ) AS attendancetotal,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN possible = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(present * 100 / possible AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS presentpc,&lt;/P&gt;
  &lt;P&gt; present AS presenttotal,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN possible = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(aea * 100 / possible AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS aeapc,&lt;/P&gt;
  &lt;P&gt; aea AS aeatotal,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN possible = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(authorisedabsence * 100 / possible AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS authorisedpc,&lt;/P&gt;
  &lt;P&gt; authorisedabsence AS authorisedabsencetotal,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN possible = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(( unauthorisedabsence ) * 100 / possible AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS unauthorisedpc,&lt;/P&gt;
  &lt;P&gt; unauthorisedabsence AS unauthorisedabsencetotal,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN possible = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(( latebefore + lateafter ) * 100 / possible AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS latepc,&lt;/P&gt;
  &lt;P&gt;( latebefore + lateafter ) AS latestotal,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN possible = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(latebefore * 100 / possible AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS latebeforepc,&lt;/P&gt;
  &lt;P&gt; latebefore AS latebeforetotal,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN possible = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(lateafter * 100 / possible AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS lateafterpc,&lt;/P&gt;
  &lt;P&gt; lateafter AS lateaftertotal,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN possible = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(missing * 100 / possible AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS missingpc,&lt;/P&gt;
  &lt;P&gt; missing AS missingtotal,&lt;/P&gt;
  &lt;P&gt; CASE&lt;/P&gt;
  &lt;P&gt; WHEN possible = 0 THEN 0&lt;/P&gt;
  &lt;P&gt; ELSE Cast(unexplained * 100 / possible AS DECIMAL(5, 2))&lt;/P&gt;
  &lt;P&gt; END AS unexplainedpc,&lt;/P&gt;
  &lt;P&gt; unexplained AS unexplainedtotal&lt;/P&gt;
  &lt;P&gt; FROM (SELECT sd.person_id,&lt;/P&gt;
  &lt;P&gt; chosen_forename,&lt;/P&gt;
  &lt;P&gt; chosen_surname,&lt;/P&gt;
  &lt;P&gt; gender,&lt;/P&gt;
  &lt;P&gt; year_group,&lt;/P&gt;
  &lt;P&gt; reg,&lt;/P&gt;
  &lt;P&gt; house,&lt;/P&gt;
  &lt;P&gt; @eventstart AS yearstart,&lt;/P&gt;
  &lt;P&gt; @date AS date,&lt;/P&gt;
  &lt;P&gt; Sum(present) AS present,&lt;/P&gt;
  &lt;P&gt; Sum(present) - Sum(lates) AS present_minus_Lates,&lt;/P&gt;
  &lt;P&gt; Sum(attended) AS attended,&lt;/P&gt;
  &lt;P&gt; Sum(authorisedabsence) AS authorisedabsence,&lt;/P&gt;
  &lt;P&gt; Sum(unauthorisedabsence) AS unauthorisedabsence,&lt;/P&gt;
  &lt;P&gt; Sum(aea) AS aea,&lt;/P&gt;
  &lt;P&gt; Sum(latebefore) AS latebefore,&lt;/P&gt;
  &lt;P&gt; Sum(lateafter) AS lateafter,&lt;/P&gt;
  &lt;P&gt; Sum(lates) AS lates,&lt;/P&gt;
  &lt;P&gt; Sum(Minutes_late) AS Minutes_late,&lt;/P&gt;
  &lt;P&gt; Cast(Avg(Minutes_late)AS DECIMAL(5, 1)) AS Minutes_late_Ave,&lt;/P&gt;
  &lt;P&gt; Sum(possible) AS possible,&lt;/P&gt;
  &lt;P&gt; Sum(not_required) AS not_required,&lt;/P&gt;
  &lt;P&gt; Sum(missing) AS missing,&lt;/P&gt;
  &lt;P&gt; Sum(unexplained) AS unexplained&lt;/P&gt;
  &lt;P&gt; FROM (SELECT * FROM dfsi.dbo.attendance_summary_cache a&lt;/P&gt;
  &lt;P&gt; WHERE Summary_Type = 'Person Day'&lt;/P&gt;
  &lt;P&gt; AND session_start &amp;gt;= @eventstart&lt;/P&gt;
  &lt;P&gt; AND session_start &amp;lt;= @date&lt;/P&gt;
  &lt;P&gt; --[APPENDFILTER(TERM, Term_or_holiday)]&lt;/P&gt;
  &lt;P&gt; --[APPENDFILTER(ATTENDANCEDATE, session_start)]&lt;/P&gt;
  &lt;P&gt; --[APPENDCLIENTFILTER(MARKDATE, session_start)]&lt;/P&gt;
  &lt;P&gt; --[APPENDCLIENTFILTER(ATTENDANCEDATE, session_start)]&lt;/P&gt;
  &lt;P&gt; --[APPENDCLIENTFILTER(TERM, Term_or_holiday)]&lt;/P&gt;
  &lt;P&gt; ) dt1&lt;/P&gt;
  &lt;P&gt; JOIN dfsi.dbo.Stud_details_cache sd&lt;/P&gt;
  &lt;P&gt; ON sd.person_id = dt1.att_person_id and sd.acadyear = @acadyear&lt;/P&gt;
  &lt;P&gt; WHERE 1=1&lt;/P&gt;
  &lt;P&gt; --[APPENDFILTER(YG,year_group)]&lt;/P&gt;
  &lt;P&gt; --[APPENDFILTER(GENDER,GENDER)]&lt;/P&gt;
  &lt;P&gt; --[APPENDFILTER(HOUSE,HOUSE)]&lt;/P&gt;
  &lt;P&gt; --[APPENDFILTER(FSM,FSM)]&lt;/P&gt;
  &lt;P&gt; --[APPENDFILTER(PREMIUM,PREMIUM)]&lt;/P&gt;
  &lt;P&gt; --[APPENDFILTER(SEN,SEN_STATUS)]&lt;/P&gt;
  &lt;P&gt; --[APPENDFILTER(GIFTED,GIFTED)]&lt;/P&gt;
  &lt;P&gt; --[APPENDFILTER(ETHNICITY,ETHNICITY)]&lt;/P&gt;
  &lt;P&gt; --[APPENDFILTER(EAL,EAL)]&lt;/P&gt;
  &lt;P&gt; --[APPENDFILTER(AttendanceDate,session_start)]&lt;/P&gt;
  &lt;P&gt; --[APPENDFILTER(TERM,Term_or_holiday)]&lt;/P&gt;
  &lt;P&gt; --[APPENDCLIENTFILTERS]&lt;/P&gt;
  &lt;P&gt; Group by sd.person_id,&lt;/P&gt;
  &lt;P&gt; chosen_forename,&lt;/P&gt;
  &lt;P&gt; chosen_surname,&lt;/P&gt;
  &lt;P&gt; gender,&lt;/P&gt;
  &lt;P&gt; year_group,&lt;/P&gt;
  &lt;P&gt; reg,&lt;/P&gt;
  &lt;P&gt; house&lt;/P&gt;
  &lt;P&gt; ) dt2)dt3&lt;/P&gt;
  &lt;BR /&gt;
  &lt;P&gt;[Private information removed by Moderator]&lt;/P&gt;</description>
      <pubDate>Wed, 01 Nov 2017 16:25:25 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/querying-an-sql-database/m-p/554973#M21197</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2017-11-01T16:25:25Z</dc:date>
    </item>
    <item>
      <title>Re: Querying an SQL database</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/querying-an-sql-database/m-p/554974#M21198</link>
      <description>&lt;P&gt;ABAP Development?&lt;/P&gt;</description>
      <pubDate>Wed, 01 Nov 2017 20:37:46 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/querying-an-sql-database/m-p/554974#M21198</guid>
      <dc:creator>retired_member</dc:creator>
      <dc:date>2017-11-01T20:37:46Z</dc:date>
    </item>
    <item>
      <title>Re: Querying an SQL database</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/querying-an-sql-database/m-p/554975#M21199</link>
      <description>&lt;P&gt;Shouldn't this be posted on MSDN instead? Very much confused by this question... And why oh why copy-paste pages of SQL?&lt;/P&gt;</description>
      <pubDate>Thu, 02 Nov 2017 21:05:32 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/querying-an-sql-database/m-p/554975#M21199</guid>
      <dc:creator>Jelena_Perfiljeva</dc:creator>
      <dc:date>2017-11-02T21:05:32Z</dc:date>
    </item>
  </channel>
</rss>

