Dla niektórych może to wyglądać bardzo prosto, ale po prostu nie mogę tego zrozumieć.
Mam wiele zapytań MS-SQL SELECT z tej samej tabeli w kółko:
SELECT count(Page) as tAEC
FROM someTable
WHERE Page LIKE '%AEC%'
Następna
SELECT count(Page) as tTOL
FROM someTable
WHERE Page LIKE '%TOL%'
I tak dalej...
Jaki byłby bardziej efektywny sposób napisania tego zapytania. Wyszukałem w Google kilka podobnych pytań, ale nie mogłem zmusić żadnego z nich do działania. Tak więc każda pomoc jest bardzo doceniana.
2 odpowiedzi
SELECT sum(case when Page LIKE '%AEC%' then 1 end) as tAEC,
sum(case when Page LIKE '%TOL%' then 1 end) as tTOL
FROM someTable
Możesz użyć GROUP BY Page
SELECT
Page
, COUNT(Page) as "nb"
FROM someTable
GROUP BY Page
Możesz także zrobić GROUP BY CASE...
SELECT
CASE
WHEN Page LIKE '%AEC%' THEN "AEC"
WHEN Page LIKE '%TOL%' THEN "TOL"
ELSE ""
END AS "type"
, count(Page) as "nb"
FROM someTable
GROUP BY type
Możesz również COUNT IF
SELECT
COUNT(IF(Page LIKE '%AEC%', 1, NULL) THEN "AEC"
, COUNT(IF(Page LIKE '%TOL%', 1, NULL) THEN "TOL"
FROM someTable
Podobne pytania
Powiązane pytania
Nowe pytania
sql-server
Microsoft SQL Server to system zarządzania relacyjnymi bazami danych (RDBMS). Użyj tego tagu dla wszystkich wersji SQL Server, w tym Compact, Express, Azure, Fast-track, APS (dawniej PDW) i Azure SQL DW. Nie używaj tego tagu dla innych typów DBMS (MySQL, PostgreSQL, Oracle itp.). Nie używaj tego tagu w przypadku problemów z oprogramowaniem i programowaniem mobilnym, chyba że jest on bezpośrednio powiązany z bazą danych.