Quantcast
Channel: SCN: Message List - SAP HANA Developer Center
Viewing all articles
Browse latest Browse all 9165

Re: SAP HANA SQL - WHERE clause with OR issues

$
0
0

Hi Lars,

 

Thank you for such a quick response.

 

Yes, this error can be easily reproduced.

 

I can run the statement below many times.

 

SELECT *
   FROM TEST_SCHEMA.TB_TEST_DATA
  WHERE (FLD1 = 'VAL 1' AND FLD2 = 'VAL 1' AND FLD3 = 'VAL 1')
     OR (FLD1 = 'VAL 1' AND FLD2 = 'VAL 1' AND FLD3 = 'VAL 2')

 

Every time I run the statement below I get an error.

 

SELECT *
   FROM TEST_SCHEMA.TB_TEST_DATA
  WHERE (FLD1 = 'VAL 1' AND FLD2 = 'VAL 1' AND FLD3 = 'VAL 2')
     OR (FLD1 = 'VAL 2' AND FLD2 = 'VAL 2' AND FLD3 = 'VAL 1') 

 

This issue occurs with other tables I have.

 

There is a common denominator.

 

When my query has the same values for FLD1 and FLD2 and different values for FLD3 the select statement executes successfully.

 

When my query has different values for FLD1, FLD2 and FLD3 the select statement generates an error.

 

I just built another version of TB_TEST_DATA reducing the number of columns in the table, please see below.

 

CREATE COLUMN TABLE TEST_SCHEMA.TB_TEST_DATA2
(ROW_ID                    INTEGER      PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
FLD1                      VARCHAR(255) NOT NULL,
FLD2                      VARCHAR(255) NOT NULL,
FLD3                      VARCHAR(255) NOT NULL);

 

I have loaded the above table with the following data:

 

insert into TEST_SCHEMA.TB_TEST_DATA2
(ROW_ID, FLD1, FLD2, FLD3)
VALUES (1, 'VAL 1', 'VAL 1', 'VAL 1');

 

insert into TEST_SCHEMA.TB_TEST_DATA2
(ROW_ID, FLD1, FLD2, FLD3)
VALUES (2,'VAL 1', 'VAL 1', 'VAL 2');

 

insert into TEST_SCHEMA.TB_TEST_DATA2
(ROW_ID, FLD1, FLD2, FLD3)
VALUES (3,'VAL 2', 'VAL 2', 'VAL 1');

 

insert into TEST_SCHEMA.TB_TEST_DATA2
(ROW_ID, FLD1, FLD2, FLD3)
VALUES (4,'VAL 2', 'VAL 2', 'VAL 2');

 

When I execute the statement below I have the correct result.

 

SELECT *

   FROM Z_DG_MDM.TB_TEST_DATA2

  WHERE (FLD1 = 'VAL 1' AND FLD2 = 'VAL 1' AND FLD3 = 'VAL 1')

     OR (FLD1 = 'VAL 1' AND FLD2 = 'VAL 1' AND FLD3 = 'VAL 2')

 

The statement below generates an error.

 

SELECT *

   FROM Z_DG_MDM.TB_TEST_DATA2

  WHERE (FLD1 = 'VAL 1' AND FLD2 = 'VAL 1' AND FLD3 = 'VAL 2')

     OR (FLD1 = 'VAL 2' AND FLD2 = 'VAL 2' AND FLD3 = 'VAL 1')

 

I am not sure what might be going on.


Viewing all articles
Browse latest Browse all 9165

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>