总结国家活跃/不活跃

时间:2020-07-10 05:12:40

标签: sql-server database

我有一直在尝试获得的数据,并在SQL Server 2017上写在这里:http://sqlfiddle.com/#!18/c457bc/109

CREATE TABLE customer
    ([CustomerID] int, [State] varchar(34), [ContactName] varchar(18), [Address] varchar(29), [City] varchar(12), [PostalCode] varchar(8), [Country] varchar(9))
;
    
INSERT INTO customer
    ([CustomerID], [State], [ContactName], [Address], [City], [PostalCode], [Country])
VALUES
    (1, 'I', 'Maria Anders', 'Obere Str. 57', 'Berlin', '12209', 'Germany'),
    (2, 'A', 'Ana Trujillo', 'Avda. de la Constitución 2222', 'C', '05021', 'Mexico'),
    (3, 'I', 'Antonio Moreno', 'Mataderos 2312', 'B', '05023', 'Mexico'),
    (4, 'I', 'Thomas Hardy', '120 Hanover Sq.', 'London', 'WA1 1DP', 'UK'),
    (5, 'I', 'Christina Berglund', 'Berguvsvägen 8', 'Luleå', 'S-958 22', 'Sweden'),
    (6, 'I', 'Hanna Moos', 'Forsterstr. 57', 'Mannheim', '68306', 'Germany'),
    (7, 'A', 'Frédérique Citeaux', '24, place Kléber', 'Strasbourg', '67000', 'France'),
    (8, 'A', 'Martín Sommer', 'C/ Araquil, 67', 'Madrid', '28023', 'France'),
    (9, 'A', 'Laurence Lebihans', '12, rue des Bouchers', 'Marseille', '13008', 'France'),
    (10, 'A', 'Elizabeth Lincoln', '23 Tsawassen Blvd.', 'Tsawassen', 'T2F 8M4', 'Canada'),
    (11, 'I', 'Victoria Ashworth', 'Fauntleroy Circus', 'London', 'EC2 5NT', 'UK'),
    (12, 'A', 'Francisco Chang', 'Sierras de Granada 9993', 'A', '05022', 'Mexico')

我想以这种格式获取数据

Data format needed

Germany | I
UK      | I
Mexico  | A
France  | A
Sweden  | I
Canada  | A

基本上,如果该国家/地区的状态为A(有效)或I(无效),则该州应显示A;如果该州全部为A,则应显示A;如果所有状态为Is,则仅应显示A显示我。

以上是一个较小的数据集,但是我正在研究一个较大的数据集。

请帮助。

1 个答案:

答案 0 :(得分:0)

请看小提琴

FIDDLE

SELECT
DISTINCT COUNTRY,
CASE
WHEN (SELECT COUNT(*) FROM CUSTOMER WHERE COUNTRY=C.COUNTRY AND STATE='A')<=0 THEN 'I' 
WHEN (SELECT COUNT(*) FROM CUSTOMER WHERE COUNTRY=C.COUNTRY AND STATE='I')<=0 THEN 'A'
ELSE 'A'
END AS STATE
FROM 
CUSTOMER C

我所做的是,使所有COUNTRYDISTINCT成为唯一的,然后用'A'或'I'计数值。如果值为零,则将相反的STATE设置为答案,依此类推。否则设置A