Advertisement
JanuszKowalski123

test

May 9th, 2024 (edited)
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. Msg 8120, Level 16, State 1, Line 19
  2. Column 'Departments.department_hierarchy' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
  3.  
  4. -- Tworzenie tabeli z hierarchiczną strukturą departamentów
  5. CREATE TABLE Departments (
  6. department_id INT PRIMARY KEY,
  7. department_name NVARCHAR(100),
  8. parent_department_id INT,
  9. department_hierarchy HIERARCHYID
  10. );
  11.  
  12. -- Wstawianie przykładowych danych
  13. INSERT INTO Departments (department_id, department_name, parent_department_id, department_hierarchy)
  14. VALUES
  15. (1, 'CEO Office', NULL, HIERARCHYID::GetRoot()),
  16. (2, 'Finance', 1, NULL),
  17. (3, 'HR', 1, NULL),
  18. (4, 'Accounting', 2, NULL),
  19. (5, 'Recruitment', 3, NULL);
  20.  
  21. -- Wstawianie danych z wykorzystaniem hierarchii już istniejących
  22. INSERT INTO Departments (department_id, department_name, parent_department_id, department_hierarchy)
  23. SELECT
  24. 6,
  25. 'Marketing',
  26. 1,
  27. CASE
  28. WHEN parent_department_id IS NULL THEN HIERARCHYID::GetRoot().GetDescendant(CAST(0x00 AS BINARY(4)), CAST(0x01 AS BINARY(4)))
  29. ELSE (SELECT department_hierarchy.GetDescendant(MAX(department_hierarchy), NULL) FROM Departments WHERE department_id = parent_department_id)
  30. END
  31. FROM Departments
  32. WHERE department_id = 1; -- Wybieramy departament o ID = 1, ponieważ to on jest rodzicem dla nowego departamentu 'Marketing'
  33.  
  34. INSERT INTO Departments (department_id, department_name, parent_department_id, department_hierarchy)
  35. SELECT
  36. 7,
  37. 'IT',
  38. 1,
  39. CASE
  40. WHEN parent_department_id IS NULL THEN HIERARCHYID::GetRoot().GetDescendant(CAST(0x00 AS BINARY(4)), CAST(0x02 AS BINARY(4)))
  41. ELSE (SELECT department_hierarchy.GetDescendant(MAX(department_hierarchy), NULL) FROM Departments WHERE department_id = parent_department_id)
  42. END
  43. FROM Departments
  44. WHERE department_id = 1; -- Wybieramy departament o ID = 1, ponieważ to on jest rodzicem dla nowego departamentu 'IT'
  45.  
  46.  
  47. -- Wyświetlanie struktury departamentów
  48. SELECT department_id, department_name, parent_department_id, department_hierarchy.ToString() AS hierarchy_path
  49. FROM Departments
  50. ORDER BY department_hierarchy;
  51.  
  52.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement