The incident occurred when a 42-year-old Swiss man, a long time employee at the factory Kronospan, opened fire in its canteen in Menznau town, near the Lucerne city, Wednesday morning (0800 GMT), reported Xinhua citing the city's cantonal police.
Three people, including the suspected gunman, died and seven were wounded, some of them seriously due to the incident.
One of the seriously injured person died Thursday, raising the total toll to four, police said.
The city is located on the northern shore of the Lake of Lucerne, an irregularly shaped lake surrounded by mountains. It developed around a monastery founded in the eighth century and is a major resort.
Police said it was yet to ascertain how the suspected gunman also died.